题解 | #包含min函数的栈#

包含min函数的栈

https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

package main



var stack1 []int
var stack2 []int

// 用两个数组来模拟栈
// stack1 正常保存数据 , stack2 用来同步记录最小值
// stack1,val 入栈时,与stack2栈顶的元素比较,如果小于stack2栈顶元素则val 同时入 两个栈
// 如果 val 比 stack2 栈顶元素大,则将 stack2 栈顶元素再次入 stack2 
// 弹出时 同步弹出,保证 stack2 栈顶的元素永远是最小值
func Push(node int) {
    // write code here
    stack1 = append(stack1, node)

    if len(stack2) == 0 || node < stack2[len(stack2)-1]{
        stack2 = append(stack2, node)
    } else {
        stack2 = append(stack2, stack2[len(stack2)-1])
    }  

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

}
func Min() int {
    // write code here

    return stack2[len(stack2)-1]
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务