描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。

此栈包含的方法有:

  • push(value):将value压入栈中
  • pop():弹出栈顶元素
  • top():获取栈顶元素
  • min():获取栈中最小元素

数据范围:操作数量满足 0≤n≤300 ,输入的元素满足 |val|≤10000
进阶:栈的各个操作的时间复杂度是 O(1),空间复杂度是 O(n)

示例
 // 输入:
 ["PSH-1","PSH2","MIN","TOP","POP","PSH1","TOP","MIN"]
 // 输出:
 -1,2,1,-1

"PSH-1"表示将-1压入栈中,栈中元素为-1

"PSH2"表示将2压入栈中,栈中元素为2,-1

“MIN”表示获取此时栈中最小元素==>返回-1

"TOP"表示获取栈顶元素==>返回2

"POP"表示弹出栈顶元素,弹出2,栈中元素为-1

"PSH1"表示将1压入栈中,栈中元素为1,-1

"TOP"表示获取栈顶元素==>返回1

“MIN”表示获取此时栈中最小元素==>返回-1

代码实现
var stack []int

func Push(node int) {
    stack = append(stack, node)
}

func Pop() {
    stack = stack[0:len(stack)-1]
}

func Top() int {
    result := stack[len(stack) - 1]
    return result
}

func Min() int {
    min := stack[0]
    for _, v := range stack {
        if min > v {
            min = v
        }
    }
    return min
}

本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论