跳转至

LC155 - 最小栈

MinStack.go
package Stack

import "math"

type MinStack struct {
    size int
    data []int
    min  []int
}

func Constructor() MinStack {
    minStack := MinStack{
        size: 0,
        data: make([]int, 0),
        min:  make([]int, 0),
    }
    return minStack
}

func (this *MinStack) Push(val int) {
    var curMin int
    if this.size == 0 {
        curMin = math.MaxInt
    } else {
        curMin = this.min[this.size-1]
    }
    newMin := min(val, curMin)
    this.data = append(this.data, val)
    this.min = append(this.min, newMin)
    this.size++
}

func (this *MinStack) Pop() {
    this.data = this.data[:this.size-1]
    this.min = this.min[:this.size-1]
    this.size--
}

func (this *MinStack) Top() int {
    return this.data[this.size-1]
}

func (this *MinStack) GetMin() int {
    return this.min[this.size-1]
}