题解 | #包含min函数的栈#
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
package main
var stack1 []int
var stack2 []int
// 用两个数组来模拟栈
// stack1 正常保存数据 , stack2 用来同步记录最小值
// stack1,val 入栈时,与stack2栈顶的元素比较,如果小于stack2栈顶元素则val 同时入 两个栈
// 如果 val 比 stack2 栈顶元素大,则将 stack2 栈顶元素再次入 stack2
// 弹出时 同步弹出,保证 stack2 栈顶的元素永远是最小值
func Push(node int) {
// write code here
stack1 = append(stack1, node)
if len(stack2) == 0 || node < stack2[len(stack2)-1]{
stack2 = append(stack2, node)
} else {
stack2 = append(stack2, stack2[len(stack2)-1])
}
}
func Pop() {
// write code here
stack1 = stack1[:len(stack1)-1]
stack2 = stack2[:len(stack2)-1]
}
func Top() int {
// write code here
return stack1[len(stack1)-1]
}
func Min() int {
// write code here
return stack2[len(stack2)-1]
}

