type MinStack struct { data []int min []int top int }
funcmin(a int, b int)int { if(a > b) { return b } else { return a } }
/** initialize your data structure here. */ funcConstructor() MinStack { return MinStack { make([]int, 10010), make([]int, 10010), 0, } }
func(this *MinStack) Push(x int) { this.top++ if this.top == 1 { this.data[this.top] = x this.min[this.top] = x } else { this.data[this.top] = x this.min[this.top] = min(x, this.min[this.top - 1]); //fmt.Println(this.min[this.top]) } }
func(this *MinStack) Pop() { this.top -- }
func(this *MinStack) Top() int { return this.data[this.top] }
func(this *MinStack) GetMin() int { return this.min[this.top] }
/** * Your MinStack object will be instantiated and called as such: * obj := Constructor(); * obj.Push(x); * obj.Pop(); * param_3 := obj.Top(); * param_4 := obj.GetMin(); */