Leecode 155最小スタック

タイトル

ここに画像を挿入説明
リンクの説明を追加

問題解決のためのアイデア

補助スタックを使用する方法

  • スタック、ストアデータを作成し、そして二次スタックを作成し、最小値を格納するために使用され
  • 格納されたデータは、補助スタック未満の場合場合スタックデータストアに二次スタック一方
  • 削除スタック要素は、スタックの最上位要素を支援するかどうかを検討する際に
  • 、補助スタックトップの要素への復帰を最小時間を返します。
//C#语言实现
public class MinStack {

    //创建数据栈
    Stack<int> stack = new Stack<int>();
    //创建辅助栈
    Stack<int> min_stack = new Stack<int>();
    
    /** initialize your data structure here. */
    public MinStack() {
    }
    
    public void Push(int x) {
    //当辅助栈元素为0
        if (min_stack.Count == 0)
                min_stack.Push(x);
        else
        {            
        //判断辅助栈栈顶元素与新加入元素的大小,如果小于辅助栈栈顶元素,加入辅助栈
          if (min_stack.Peek() >= x)
              min_stack.Push(x);
        }
        stack.Push(x);

    }
    
    public void Pop() {
    //判断数据栈是否为空
        if(stack.Count==0)
        return;
        //抛出数据栈栈顶元素,并将值赋给value
        var value = stack.Pop();
        //判断辅助栈栈顶元素与value是否相等
        if (value == min_stack.Peek())
        {
            min_stack.Pop();
        }

    }
    
    public int Top() {
        return stack.Peek();

    }
    
    public int GetMin() {
        return min_stack.Peek();

    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.Push(x);
 * obj.Pop();
 * int param_3 = obj.Top();
 * int param_4 = obj.GetMin();
 */

ここに画像を挿入説明

パイソン達成

#python实现

class MinStack(object):

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.stack=[]
        self.min_stack=[]

    def push(self, x):
        """
        :type x: int
        :rtype: None
        """
        self.stack.append(x)
        if not self.min_stack or self.min_stack[-1]>=x:
            self.min_stack.append(x)

    def pop(self):
        """
        :rtype: None
        """
        if self.stack[-1]==self.min_stack[-1]:
            self.min_stack.pop()
        self.stack.pop()
        

    def top(self):
        """
        :rtype: int
        """
        return self.stack[-1]
        # 因为添加元素使用append的方法,最后进入list的在最右边,所以使用[-1]来访问

    def getMin(self):
        """
        :rtype: int
        """
        return self.min_stack[-1]

ここに画像を挿入説明

公開された52元の記事 ウォンの賞賛5 ビュー3972

おすすめ

転載: blog.csdn.net/Pang_ling/article/details/105039972