剑指 Offer 30. 包含min函数的栈

和力扣155. 最小栈一致

  1. type MinStack struct {
  2. stack []int //存储栈
  3. min []int //辅助储存栈,存储最小值
  4. }
  5. /** initialize your data structure here. */
  6. func Constructor() MinStack {
  7. return MinStack{
  8. stack: []int{},
  9. min: []int{},
  10. }
  11. }
  12. func (this *MinStack) Push(x int) {
  13. this.stack = append(this.stack, x)
  14. if len(this.min) == 0 || x <= this.min[len(this.min)-1] { // 没有元素或者x小于最小值的时候,append到min最后
  15. this.min = append(this.min, x)
  16. }else {
  17. this.min = append(this.min, this.min[len(this.min)-1]) // 否则继续将上一个最小值append到min
  18. }
  19. }
  20. func (this *MinStack) Pop() {
  21. this.stack = this.stack[:len(this.stack)-1]
  22. this.min = this.min[:len(this.min)-1]
  23. }
  24. func (this *MinStack) Top() int {
  25. if len(this.stack) == 0 {
  26. return 0
  27. }
  28. return this.stack[len(this.stack)-1]
  29. }
  30. func (this *MinStack) Min() int {
  31. if len(this.min) > 0 {
  32. return this.min[len(this.min)-1]
  33. }
  34. return 0
  35. }