search - 是时候找到链表中的最大元素了

标签 search data-structures linked-list time-complexity

我有一个有序链表。我想知道在这两种情况下找到最大元素的时间:

  • 如果我维护一个指向链表末尾的尾指针,并且
  • 如果我不这样做。

最佳答案

对于有序链表:

  • O(1) 如果列表是从最大到最小排序的,因为第一个已经是最大的。

  • O(n) 如果列表是从 min 到 max 排序的,如果你进一步有尾指针,它将变成 O(1)。原因是最大元素是链表中的最后一个。因此,您必须遍历到尾部 (O(n))。另一方面,当你有尾指针时,这将是 O(1),你只需返回尾指针指向的内容。

对于无序链表:

  • 总是 O(n) 不管你有没有尾指针。原因是,对于一个无序的线性列表,你必须遍历(O(n))每一个来确定哪个是最大的。即使使用尾指针也无济于事。

关于search - 是时候找到链表中的最大元素了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861694/

相关文章:

search - Rails - 如何不评估 Ransack 搜索表单中的字段

jquery - 使用 Ajax 和按键优化搜索

C++ 数据成员对齐和数组打包

c - 我无法 typedef 指向已进行 typedef 编辑的结构的指针

c++ - 为什么我的好友类不能访问私有(private)成员?

c++ - 函数多次不起作用?

java - 您建议使用哪种搜索算法或数据结构?

java - 调用二分查找方法的正确方法是什么

algorithm - 从堆中间删除一个节点

C——链表