实现返回栈中的最小元素 要求 时间 O(1)
package mainimport "fmt"type Stack struct {stack []item}type item struct {min, x int}func NewStack() Stack {return Stack{}}func(m *Stack) Push(x int) {min := xif len(m.stack) > 0 && m.GetMin() < x {min = m.GetMin()}m.stack = append(m.stack, item{min: min, x: x})return}func (m *Stack) Pop() {length := len(m.stack)m.stack = m.stack[:length - 1]return}func (m *Stack) Top() int {length := len(m.stack)return m.stack[length - 1].x}func (m *Stack) GetMin() int {length := len(m.stack)return m.stack[length - 1].min}func main() {minStack := new(Stack)minStack.Push(-2)minStack.Push(0)minStack.Push(3)minStack.Push(-5)fmt.Println(minStack.GetMin())minStack.Pop()fmt.Println(minStack.Top())fmt.Println(minStack.GetMin())}
