在单链表时间复杂度中查找节点

时间:2016-05-18 14:21:37

标签: algorithm list data-structures linked-list singly-linked-list

我的DSA课程中期测试中有这个问题:

考虑单个链接列表包含N个节点(N> 8),方法f1()被设计为 从头开始查找第8个节点,方法f2()用于查找从结尾开始的第8个节点。 f1()和f2()的时间复杂度是多少?

选择一个:

一个。 O(N)和O(N)

湾O(1)和O(1)

℃。 O(1)和O(N)

d。 O(N)和O(1)

给出的正确答案是c。 O(1)和O(N)。但是我认为正确的答案是。我知道如果N = 8,它将花费O(1)时间从头开始找到第8个节点(只返回尾节点)但是在这种情况下N>有人可以帮我解释一下吗?

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

O(1)意味着持续的运行时间。换句话说,它不依赖于输入大小。

在此处应用该定义时,您可以看到,无论输入大小如何,取出第8个元素始终是一个常量操作。这是因为,无论输入的大小如何(例如:10,100,100 ..),操作get(8)将始终采用相同的时间。此外,因为我们肯定知道n> 8,尝试获取第8个元素不会导致超出输入的大小。