定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
1 | MinStack minStack1 = new MinStack(); |
本题难点: 将 min() 函数复杂度降为 O(1)O(1) ,可通过建立辅助栈实现;
数据栈 A : 栈 A用于存储所有元素,保证入栈 push() 函数、出栈 pop() 函数、获取栈顶 top() 函数的正常逻辑。
辅助栈 B : 栈 B中存储栈 A 中所有 非严格降序 的元素,则栈 A 中的最小元素始终对应栈 B 的栈顶元素,即 min() 函数只需返回栈 B 的栈顶元素即可。
因此,只需设法维护好栈B的元素,使其保持非严格降序,即可实现 min()函数的O(1)复杂度。
1 | class MinStack { |
本文作者: 树叶莎莎遮窗棂
发布时间: 2022-02-11
最后更新: 2025-04-26
本文标题: 包含min函数的栈
本文链接: http://sysszcl.github.io/ article/11cbd9c1.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!

发布时间: 2022-02-11
最后更新: 2025-04-26
本文标题: 包含min函数的栈
本文链接: http://sysszcl.github.io/ article/11cbd9c1.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
