-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path155-min-stack.go
More file actions
40 lines (34 loc) · 777 Bytes
/
Copy path155-min-stack.go
File metadata and controls
40 lines (34 loc) · 777 Bytes
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
package main
type MinStack struct {
Data *[]int
Min *[]int
}
func Constructor3() MinStack {
tmp1, tmp2 := []int{}, []int{}
return MinStack{
Data: &tmp1,
Min: &tmp2,
}
}
func (this *MinStack) Push(val int) {
if len(*this.Min) == 0 {
*this.Min = append(*this.Min, val)
} else {
if val >= (*this.Min)[len(*this.Min)-1] {
*this.Min = append(*this.Min, (*this.Min)[len(*this.Min)-1])
} else {
*this.Min = append(*this.Min, val)
}
}
*this.Data = append(*this.Data, val)
}
func (this *MinStack) Pop() {
*this.Data = (*this.Data)[:len(*this.Data)-1]
*this.Min = (*this.Min)[:len(*this.Min)-1]
}
func (this *MinStack) Top() int {
return (*this.Data)[len(*this.Data)-1]
}
func (this *MinStack) GetMin() int {
return (*this.Min)[len(*this.Min)-1]
}