标签:问题: stack 输出 遍历 等于 入栈 pop 设计 top
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。
示例:
输入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]
输出:
[null,null,null,null,-3,null,0,-2]
解题心路:
初看比较简单,于是初步规划:
1.用一个数组来表示栈 arry。
2.用一个int来表示栈顶位置,top_pos arry[top_pos] 代表栈顶元素
3.通过移动栈顶位置来改变栈大小
4.出现问题:怎么才能快速取出最小值呢? 遍历?这太傻了。
于是高端思维出现了:
思想逻辑:
1.每次出现一个比上一个最小更小或者等于的数的时候就将这次的最下压栈,这样越靠近栈顶的元素越小,相当于维持了一个有序栈。
2.当我要出栈的元素等于栈顶元素时就将栈顶出栈,这样栈顶元素肯定是剩下的最小的。
标签:问题: stack 输出 遍历 等于 入栈 pop 设计 top
原文地址:https://www.cnblogs.com/xiongxinxzy/p/13162403.html