如何对列表 A 的元素进行排序,以便它们遵循另一个(超集)列表 B 的顺序?假设没有重复。
E.g。 A 可能包含[8 2 5 1]而 B 可能包含[5 6 9 8 7 4 1 2 3],所以我想排序 A 成为[5 8 1 2]
我对如何有效地执行此操作以及良好的运行时复杂性感兴趣。
答案 0 :(得分:3)
如果 B 是 A 的超集,我只需将 A 转储到哈希表中,扫描 B < / strong>并创建一个新列表,我在其中插入哈希表中包含的 B 中的每个元素。使用O(a)额外内存和O(b)运行时。
答案 1 :(得分:2)
以下是一些想法:
(在给定的时间复杂度中, n 是 A 的大小而 m 是 B 的大小>。时间复杂性没有简化。)