微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

合并Om + n中的跳过列表

如何解决合并Om + n中的跳过列表

我被要求编写一个实现,以O(m + n)的时间复杂度将n个元素的跳过列表A与m个元素的跳过列表B合并。我不需要代码,只需一个基本说明即可实现该目标。

我想到了遍历A,遍历B并比较值,然后将其合并到新的跳过列表C中,但这似乎是二次的。还是我错过了什么?

解决方法

根据定义,跳过列表是按照某种方式(例如,按数字递增的顺序)或“按姓氏的字母顺序”或其他方式进行排序的,并且使用了元素空间的总顺序。

对于您的问题,您肯定会假设 A B 的排序方式相同,并且您知道这种方式是什么,因此您可以判断 A 中的给定元素是否小于,大于或等于 B 中的给定元素。

如果是这样,那么您可以编写一个循环,在每次迭代中比较每个列表的“ next”元素。如果 A 中的“下一个”元素称为 a i -小于 B 中的“下一个”元素,那么您知道 a i 不会出现在 B 中,并且小于您尚未检查的任何元素,因此您可以将 a i 附加到结果列表中,然后继续进行 A 的下一个元素。而且,反之亦然。 (当然,如果两个元素相等,则只需追加一个并继续到每个列表的下一个元素。)

(这对跳过列表不是很特定;您可以使用相同的方法来合并任何两个排序的列表,而不管用于实现这些列表的特定数据结构如何,只要它们以相同的方式排序,您知道那是什么。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。