【发布时间】:2010-08-12 11:08:38
【问题描述】:
如何对列表 A 的元素进行排序,以便它们遵循另一个(超集)列表 B 的顺序?假设没有重复。
例如A 可能包含 [8 2 5 1] 而 B 可能包含 [5 6 9 8 7 4 1 2 3],所以我想排序 A 变成 [5 8 1 2]
我对高效且具有良好运行时复杂性的方法感兴趣。
【问题讨论】:
如何对列表 A 的元素进行排序,以便它们遵循另一个(超集)列表 B 的顺序?假设没有重复。
例如A 可能包含 [8 2 5 1] 而 B 可能包含 [5 6 9 8 7 4 1 2 3],所以我想排序 A 变成 [5 8 1 2]
我对高效且具有良好运行时复杂性的方法感兴趣。
【问题讨论】:
如果 B 是 A 的超集,我只需将 A 转储到哈希表中,然后扫描 B 并创建一个新列表,在其中插入散列表中包含的 B 中的每个元素。使用 O(a) 额外内存和 O(b) 运行时间。
【讨论】:
这里有一些想法:
(在给定的时间复杂度中,n 是 A 的大小,m 是 B 的大小>. 时间复杂度没有简化。)
【讨论】: