package main import "math" var stack []int var minStack = []int{math.MaxInt} /* * stack:正常存储元素 minStack:存当前push进去的最小值,每次弹出是直接获取top元素就是最小值 */ func Push(node int) { stack = append(stack, node) min := minNum(node, minStack[len(minStack) - 1]) minStack = append(minStack, min) } func Pop() int { minStack = minStack[:len(minStack)-1] res := stack[len(stack)-1] stack = stack[:len(stack)-1] return res } func Top() int { return stack[len(stack)-1] } func Min() int { return minStack[len(minStack)-1] } func minNum(a, b int) int { if a < b { return a } return b }