题解 | #包含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] }