2012-10-07 128 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

感謝在這種情況下哈希表的想法。我可以像這樣工作。 –