数据结构:算法的最佳和最差运行时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构:算法的最佳和最差运行时间相关的知识,希望对你有一定的参考价值。
我对哪个选项是正确的以及为什么感到困惑。所以这里是问题:
- 从单链表中的最后一个位置删除节点的最佳运行时间是什么? (a)O(1) (b)Ω(n) (c)O(log n) (d)Θ(n2) 我的想法: 我认为b中的解决方案?因为,我知道当你删除链表的最后一个元素时,它是O(n),因为你必须遍历链表的所有元素。
- 将元素推送到双向链表中实现的堆栈的最差运行时间是多少? (a)O(1) (b)问题(8) (c)O(n log n) (d)Ω(n) 我的想法: 我认为解决方案是d,因为在链表中插入元素的大哦是O(n),其中n是要插入的元素数。
我真的很困惑这个话题,如果有人可以修改我的解决方案并理解为什么他们的解决方案是正确的,那么我会很感激。谢谢。
答案
首先你是对的。为了删除最后一个元素,你需要遍历列表并修改指针,因此它是Ω(n)。
然而在第二个中它是O(1)。堆栈是LIFO。你有一个指向堆栈头部的指针。您需要做的就是为新元素创建一个节点,使其成为当前头部的下一个节点,并将头部设置为新创建的元素。因此,操作的数量不是堆栈大小的函数。它可以在恒定时间内完成,即O(1)。
编辑:上面的答案假设数据结构没有实现一些数组实现,由于调整大小可能再次为O(n)。
以上是关于数据结构:算法的最佳和最差运行时间的主要内容,如果未能解决你的问题,请参考以下文章