【发布时间】:2021-02-01 01:55:40
【问题描述】:
我正在尝试根据偏好删除四个数组之间的所有重复对象。所有数组都有唯一的元素,并且可能没有顺序。这是一张试图解释问题的图片:
如您所见,如果数组的首选项较低,则元素将保留在其中。例如,id 为“6”的对象在优先级为 2、3 和 4 的数组中重复出现。因此,算法必须检测到这一点并从优先级为 3 和 4 的数组中删除这些对象,因为 2
所以,如果输入数据是:
arr_p1 = [{ id: "892d" }, {id: "kla8x" }, {id: "sys32" }]
arr_p2 = [{id: "saa1" }, { id: "892d" }]
arr_p3 = [{ id: "kla8x" }, {id: "saa1" }, {id: "pp182" }]
输出必须是:
arr_p1 = [{ id: "892d" }, {id: "kla8x" }, {id: "sys32" }]
arr_p2 = [{id: "saa1" }]
arr_p3 = [{id: "pp182" }]
关于如何以良好的复杂性顺序解决这种情况的任何想法?
所有数组的大小都限制为 40 个对象。
我唯一能想到的就是按标识符对每个数组中的所有对象进行排序。然后,取随着每个列表的指针移动的对象的最低标识符,从最低首选项 (1) 到最高 (4),如果它在较高的首选项列表之一中,则将其删除...但是我需要在不改变元素顺序的情况下这样做...
Pd:我正在使用 JS 和 ES6。
【问题讨论】:
-
数组的数量是固定的吗?
-
对象中的数据是否超过此 ID?
-
是的,数组的个数是固定的,不,唯一的数据就是id。
标签: javascript arrays algorithm ecmascript-6