【发布时间】:2011-07-13 22:56:18
【问题描述】:
最近我在链表上遇到了一个有趣的问题。给出了排序的单链表,我们必须从这个列表中搜索一个元素。
时间复杂度不应超过O(log n)。这似乎我们需要在这个链表上应用二分查找。如何?由于链表不提供随机访问,如果我们尝试应用二进制搜索算法,它将达到 O(n),因为我们需要找到链表的长度并走到中间。
有什么想法吗?
【问题讨论】:
-
答案是,如果您需要执行二进制搜索,那么您使用了错误的数据结构。 :)
-
这不是发明跳过列表的原因吗?
-
如果还有人对此感兴趣,我想出的 DS 正是这样做的:cs.stackexchange.com/questions/137076/…
标签: algorithm data-structures linked-list binary-search asymptotic-complexity