2012-10-07 129 views
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"] 

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

回答

1

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

+2

感谢在这种情况下哈希表的想法。我可以像这样工作。 –