@@ -2,24 +2,23 @@ package leetcode
2
2
3
3
// MinStack MinStack
4
4
type MinStack struct {
5
- stack , min [ ]int
6
- length int
5
+ stack [][ 2 ]int
6
+ length int
7
7
}
8
8
9
9
// Constructor initialize your data structure here.
10
10
func Constructor () MinStack {
11
- return MinStack {stack : make ([]int , 0 ), min : make ([ ]int , 0 ), length : 0 }
11
+ return MinStack {stack : make ([][ 2 ]int , 0 ), length : 0 }
12
12
}
13
13
14
14
// Push 入栈
15
15
func (s * MinStack ) Push (x int ) {
16
- s .stack = append (s .stack , x )
17
- if s .length == 0 || s .min [s .length - 1 ] > x {
18
- s .min = append (s .min , x )
19
- } else {
20
- s .min = append (s .min , s .min [s .length - 1 ])
16
+ min := x
17
+ if s .length > 0 && s .GetMin () < x {
18
+ min = s .GetMin ()
21
19
}
22
- s .length = s .length + 1
20
+ s .stack = append (s .stack , [2 ]int {x , min })
21
+ s .length ++
23
22
}
24
23
25
24
// Pop 出栈
@@ -28,7 +27,6 @@ func (s *MinStack) Pop() {
28
27
return
29
28
}
30
29
s .stack = s .stack [:s .length - 1 ]
31
- s .min = s .min [:s .length - 1 ]
32
30
s .length = s .length - 1
33
31
}
34
32
@@ -37,13 +35,13 @@ func (s *MinStack) Top() int {
37
35
if s .length == 0 {
38
36
return 0
39
37
}
40
- return s .stack [s .length - 1 ]
38
+ return s .stack [s .length - 1 ][ 0 ]
41
39
}
42
40
43
41
// GetMin 返回栈中的最小值
44
42
func (s * MinStack ) GetMin () int {
45
43
if s .length == 0 {
46
44
return 0
47
45
}
48
- return s .min [s .length - 1 ]
46
+ return s .stack [s .length - 1 ][ 1 ]
49
47
}
0 commit comments