如何对列表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的大小。时间复杂度没有简化。)