【发布时间】:2021-06-21 03:28:25
【问题描述】:
好吧,我在 GeeksforGeeks 上使用数组尝试了这个问题。但是 GeeksforGeeks 中的解决方案说我们必须使用链表来删除 O(1) 时间复杂度的堆栈的中间元素。但是我也有一个使用数组的解决方案,我想确认它是否正确。删除中间元素的解决方法是:-
假设我们有一个名为 stk[] 的栈
- 通过计算 m=(Top+1)/2 找到中间元素
- 交换 stk[Top] 和 stk[m] 的值
- 删除最顶部的元素
- 然后再次交换值 stk[Top] 和 stk[m]
如果栈元素个数小于3,只删除栈顶元素即可。 我认为这个解决方案的时间复杂度也为 O(1),因为这里没有运行循环。那么任何人都可以告诉它是否是这个问题的正确解决方案?
【问题讨论】:
标签: data-structures stack time-complexity