📑 题目:155. 最小栈

🚀 本题 LeetCode 传送门

题目大意

这道题是一个数据结构实现题。要求实现一个栈的类,实现 push()、pop()、top()、getMin()。

解题思路

按照题目要求实现即可。

代码

  1. package leetcode
  2. // MinStack define
  3. type MinStack struct {
  4. elements, min []int
  5. l int
  6. }
  7. /** initialize your data structure here. */
  8. // Constructor155 define
  9. func Constructor155() MinStack {
  10. return MinStack{make([]int, 0), make([]int, 0), 0}
  11. }
  12. // Push define
  13. func (this *MinStack) Push(x int) {
  14. this.elements = append(this.elements, x)
  15. if this.l == 0 {
  16. this.min = append(this.min, x)
  17. } else {
  18. min := this.GetMin()
  19. if x < min {
  20. this.min = append(this.min, x)
  21. } else {
  22. this.min = append(this.min, min)
  23. }
  24. }
  25. this.l++
  26. }
  27. func (this *MinStack) Pop() {
  28. this.l--
  29. this.min = this.min[:this.l]
  30. this.elements = this.elements[:this.l]
  31. }
  32. func (this *MinStack) Top() int {
  33. return this.elements[this.l-1]
  34. }
  35. func (this *MinStack) GetMin() int {
  36. return this.min[this.l-1]
  37. }