Leetcodeブラッシングレコード-155。最小スタック

ここに画像の説明を挿入

この質問の最小スタックと従来のスタックの違いは、
一定の時間で最小値を返すことができる関数が必要であることです。
いつでも最小値を返すことができる必要があることを考えると
、要素に入るたびに現在の時間の最小値計算する必要があります。値
したがって、プッシュするたびに最小を記録する必要があります。
したがって、最小値を記録するデータ構造は、元のスタックの長さと同じであると考えるのは簡単です。
したがって、リストを作成して、最小値を格納します。

class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.realmin = None
        self.premin = None
        self.stack = []
        self.minstack = []
        self.stackdict = {}


    def push(self, x: int) -> None:
        self.stack.append(x)
        if self.minstack == []:
            self.minstack.append(x)
        elif self.minstack[-1] <= x:
            self.minstack.append(self.minstack[-1])
        else:
            self.minstack.append(x)



    def pop(self) -> None:
        self.minstack.pop(-1)
        return self.stack.pop(-1)#-1]#-1)
        #thisvalue = self.stack.pop()
        #self.stackdict[thisvalue] -= 1
        #if self.stackdict[thisvalue] == 0:
        #    del self.stackdict[thisvalue]


    def top(self) -> int:

        return self.stack[-1]


    def getMin(self) -> int:

        return self.minstack[-1]

43件の元の記事を公開 14 件を賞賛・2 万回以上の閲覧

おすすめ

転載: blog.csdn.net/weixin_41545780/article/details/105463475