zoukankan      html  css  js  c++  java
  • 剑指 Offer 30. 包含min函数的栈

    剑指 Offer 30. 包含min函数的栈

    地址:剑指 Offer 30. 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

    示例:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.min(); --> 返回 -3.
    minStack.pop();
    minStack.top(); --> 返回 0.
    minStack.min(); --> 返回 -2.

    提示:

    各函数的调用总次数不超过 20000 次

    
    
    type MinStack struct {
        Stack   []int
        TStack  []int
    }
    
    
    /** initialize your data structure here. */
    func Constructor() MinStack {
        return MinStack{
            Stack   : []int{},
            TStack    : []int{},
        }
    }
    
    
    func (this *MinStack) Push(x int)  {
        this.Stack = append(this.Stack, x)
        if len(this.TStack) == 0 || this.TStack[len(this.TStack)-1] >= x {
            this.TStack = append(this.TStack, x)
        }
    }
    
    
    func (this *MinStack) Pop()  {
        popValue := this.Stack[len(this.Stack)-1]
        if this.TStack[len(this.TStack)-1] >= popValue {
            this.TStack = this.TStack[0:len(this.TStack)-1]
        }
        this.Stack = this.Stack[0:len(this.Stack)-1]
    }
    
    
    func (this *MinStack) Top() int {
        //fmt.Println(this.Stack)
        return this.Stack[len(this.Stack)-1]
    }
    
    
    func (this *MinStack) Min() int {
        //fmt.Println(this.TStack)
        return this.TStack[len(this.TStack)-1]
    }
    
    
    /**
     * Your MinStack object will be instantiated and called as such:
     * obj := Constructor();
     * obj.Push(x);
     * obj.Pop();
     * param_3 := obj.Top();
     * param_4 := obj.Min();
     */
    
  • 相关阅读:
    P1962 斐波那契数列(矩阵加速DP)
    P1939 【模板】矩阵加速(数列)
    剑指04.重建二叉树
    剑指03.从尾到头打印链表
    剑指02.替换空格
    剑指01.二维数组中的查找
    Python绘图学习笔记(待完善)
    时间观念 目标观念
    购房交税
    可以不做会计,但是不能不懂会计
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/14233209.html
Copyright © 2011-2022 走看看