我有一个有序的链表。我想知道在两种情况下找到max元素的时间:
答案 0 :(得分:11)
对于有序链表:
O(1)
如果列表从max到min排序,因为第一个列表已经是最大值。
O(n)
如果列表从最小值到最大值排序,如果您还有尾指针,它将变为O(1)
。原因是max元素是链表中的最后一个元素。因此,您必须遍历尾部(O(n)
)。另一方面,当你有尾指针时,这将是O(1)
,你只需返回尾指针指向的内容。
对于未排序的链接列表:
O(n)
。原因是,对于无序排列的列表,您必须遍历(O(n)
)每个列表以确定哪一个是最大值。即使使用尾指针也无济于事。