【发布时间】:2013-12-31 18:23:19
【问题描述】:
我有一个有序链表。我想知道在这两种情况下找到最大元素的时间:
- 如果我维护一个指向链表末尾的尾指针,并且
- 如果我不这样做。
【问题讨论】:
标签: search data-structures linked-list time-complexity
我有一个有序链表。我想知道在这两种情况下找到最大元素的时间:
【问题讨论】:
标签: search data-structures linked-list time-complexity
对于有序链表:
O(1) 如果列表从最大到最小排序,因为第一个已经是最大的。
O(n) 如果列表从 min 到 max 排序,如果您还有尾指针,它将变为 O(1)。原因是最大元素是链表中的最后一个。因此你必须遍历到尾部(O(n))。另一方面,当你有尾指针时,这将是O(1),你只需返回尾指针指向的内容。
对于无序链表:
O(n)。原因是,对于一个无序列表,你必须遍历(O(n))每一个来确定哪一个是最大值。即使使用尾指针也无济于事。【讨论】: