Problem: 155. 最小栈
思路
栈
解题方法
描使用额外栈辅助, a b c d 入栈,如果d 在那么abc 必然在,所以每次入栈比较一个最小值,放入另一个栈就好
复杂度
时间复杂度:
添加时间复杂度, 示例: $O(n)$
空间复杂度:
添加空间复杂度, 示例: $O(n)$
Code
[]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
type MinStack struct { stack []int minStack []int }
func Constructor() MinStack { minStacks := MinStack{[]int{}, []int{math.MaxInt}} return minStacks }
func (this *MinStack) Push(x int) { this.stack = append(this.stack, x) minTmp := min(x, this.minStack[len(this.minStack)-1]) this.minStack = append(this.minStack, minTmp) }
func (this *MinStack) Pop() { this.stack = this.stack[:len(this.stack)-1] this.minStack = this.minStack[:len(this.minStack)-1] }
func (this *MinStack) Top() int { return (this.stack[len(this.stack)-1]) }
func (this *MinStack) GetMin() int { return (this.minStack[len(this.minStack)-1]) }
func min(x, y int) int { if x < y { return x } return y }
|