155. 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
示例:
提示:
切片实现栈,遍历切片,获取最小值:
type MinStack struct {
stack []int
}
func Constructor() MinStack {
return MinStack{}
}
func (this *MinStack) Push(val int) {
// 插入
n:=len(this.stack)
this.stack=append(this.stack,val)
// 将前面的元素重新逆序进入队列
for ; n > 0; n-- {
this.stack = append(this.stack, this.stack[0])
this.stack = this.stack[1:]
}
}
func (this *MinStack) Pop() {
this.stack=this.stack[1:]
}
func (this *MinStack) Top() int {
return this.stack[0]
}
func (this *MinStack) GetMin() int {
min := this.stack[0]
for _,v:=range this.stack{
if v<min {
min=v
}
}
return min
}
/**
* Your MinStack object will be instantiated and called as such:
* obj := Constructor();
* obj.Push(val);
* obj.Pop();
* param_3 := obj.Top();
* param_4 := obj.GetMin();
*/