目录
包含min函数的栈
访问量:903

一、简介

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


此栈包含的方法有:

push(value):将value压入栈中

pop():弹出栈顶元素

top():获取栈顶元素

min():获取栈中最小元素

题目来源:牛客


二、实现

思路:通过两个栈来执行,一个是普通栈,记录元素,另外一个栈记录当普通栈元素变化时候,普通栈当前最小值

// 使用两个栈
var (
    minStack = make([]int,0)  // 最小栈
    normalStack = make([]int,0) // 普通栈
)

func Push(node int) {
    // write code here
    if len(minStack)  == 0 {
        minStack = append(minStack, node)
    } else {
        if node > minStack[len(minStack) -1] {
            minStack = append(minStack, minStack[len(minStack) -1])
        } else {
            minStack = append(minStack, node)
        }
    }
    normalStack = append(normalStack, node)
}


func Pop() {
    // write code here
    minStack = minStack[:len(minStack) -1]
    normalStack = normalStack[:len(normalStack) -1]
}
func Top() int {
    // write code here
    return normalStack[len(normalStack) -1]
}

func Min() int {
    // write code here
    return minStack[len(minStack) -1]
}