剑指 Offer 30. 包含min函数的栈
和力扣155. 最小栈一致
type MinStack struct {
stack []int //存储栈
min []int //辅助储存栈,存储最小值
}
/** initialize your data structure here. */
func Constructor() MinStack {
return MinStack{
stack: []int{},
min: []int{},
}
}
func (this *MinStack) Push(x int) {
this.stack = append(this.stack, x)
if len(this.min) == 0 || x <= this.min[len(this.min)-1] { // 没有元素或者x小于最小值的时候,append到min最后
this.min = append(this.min, x)
}else {
this.min = append(this.min, this.min[len(this.min)-1]) // 否则继续将上一个最小值append到min
}
}
func (this *MinStack) Pop() {
this.stack = this.stack[:len(this.stack)-1]
this.min = this.min[:len(this.min)-1]
}
func (this *MinStack) Top() int {
if len(this.stack) == 0 {
return 0
}
return this.stack[len(this.stack)-1]
}
func (this *MinStack) Min() int {
if len(this.min) > 0 {
return this.min[len(this.min)-1]
}
return 0
}