19 包含min函数的栈
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路:一个栈存普通元素,一个最小栈存放目前位置最小的元素,只在压入的时候判断是否为空以及最小元素,其他情况正常处理。
package main import ( "math" ) var stack = []int{} var minStack = []int{math.MaxInt64} func Push(node int) { stack = append(stack, node) top := minStack[len(minStack) - 1] minStack = append(minStack, min(node, top)) } func Pop() { stack = stack[: len(stack) - 1] minStack = minStack[: len(minStack) - 1] } func Top() int { return stack[len(stack) - 1] } func Min() int { return minStack[len(minStack) - 1] } func min(x, y int) int { if x < y{ return x } return y }