zoukankan      html  css  js  c++  java
  • 最小栈

    • 使用切片slice实现
    type MinStack struct {
        stack []int
        minIndex int
        length int
    }
    
    
    /** initialize your data structure here. */
    func Constructor() MinStack {
        return MinStack{}
    }
    
    
    func (this *MinStack) Push(val int)  {
        this.stack = append(this.stack, val)
        this.minIndex = this.calculateMinIndex()
        this.length++
    }
    
    
    func (this *MinStack) Pop()  {
        this.stack = this.stack[:len(this.stack)-1]
        this.minIndex = this.calculateMinIndex()
        this.length--
    }
    
    
    func (this *MinStack) Top() int {
        return this.stack[this.length-1]
    }
    
    
    func (this *MinStack) GetMin() int {
        return this.stack[this.minIndex]
    }
    
    func (this *MinStack)calculateMinIndex()int{
        var min_index = 0
        for i:=1;i<len(this.stack);i++{
            if this.stack[i]<this.stack[min_index]{
                min_index = i
            }
        }
        return min_index
    }
    

    • 使用list.List实现(双链表)
    type MinStack struct {
    	min int
    	stack list.List
    }
    
    
    /** initialize your data structure here. */
    func Constructor() MinStack {
    	return MinStack{min:math.MaxInt64}
    }
    
    
    func (this *MinStack) Push(val int)  {
    	if val<this.min{
    		this.min = val
    	}
    	this.stack.PushBack(val)
    }
    
    
    func (this *MinStack) Pop()  { 
        if this.min==this.stack.Back().Value.(int){
            this.stack.Remove(this.stack.Back())
            this.min = math.MaxInt64
            for e:=this.stack.Front();e!=nil;e=e.Next(){
                val := e.Value.(int)
                if val<this.min{
                    this.min = val
                }
            }
        }else{
            this.stack.Remove(this.stack.Back())
        }
        
    }
    
    
    func (this *MinStack) Top() int {
    	return this.stack.Back().Value.(int)
    }
    
    
    func (this *MinStack) GetMin() int {
    	return this.min
    }
    
    

  • 相关阅读:
    html-标题标签、水平线标签和特殊字符
    htm-文字标签和注释标签
    html-html简介
    scss-函数
    scss-!optional
    scss-@extend
    解决SecureCRT下spark-shell中scala无法删除问题
    Python list降序排序
    Python 字典的一键多值,即一个键对应多个值
    python 数组中如何根据值,获取索引,如何根据索引删除值 , 以及如何根据值删除值
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14636030.html
Copyright © 2011-2022 走看看