19 包含min函数的栈

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
 
思路:一个栈存普通元素,一个最小栈存放目前位置最小的元素,只在压入的时候判断是否为空以及最小元素,其他情况正常处理。
 
package main

import (
    "math"
)

var stack  = []int{}
var minStack  = []int{math.MaxInt64}

func Push(node int) {
    stack = append(stack, node)
    top := minStack[len(minStack) - 1]
    minStack = append(minStack, min(node, top))
}

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

func min(x, y int) int {
    if x < y{
        return x
    }
    return y
}
原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14635152.html