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
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章