0

我正在研究用javascript解决以下问题的算法。在头部 "1:2,3,4,6,5" 中有 "6" 和 "5" 尾部,这些尾部也可用于更高级别的头部,即在 "2:5,6" 中,因此 6 和 5 应该是从较低的头部删除,即“1:”。因为所有尾部值都应该由头部唯一存在。

输入数组

in = ["1:2,3,4,6,5", "2:5,6", "3:7,8,9"] 

期望的输出

out = ["1:2,3,4", "2:5,6", "3:7,8,9"] 

迭代是我能想到的唯一方法。解决这个问题的最佳方法是什么?谢谢。

4

1 回答 1

1

首先按他们的头对列表进行排序。然后以相反的顺序遍历排序列表。访问列表时,记录列表中存在的所有尾部元素。如果之前已经看到过尾元素,请将其从当前列表中删除。您可以使用哈希表记录元素是否被访问。

于 2012-10-07T12:40:41.430 回答