【Leetcode】python - [155] Min Stack 個人解法筆記

題目出處

155. Min Stack

難度

easy

個人範例程式碼

class MinStack:

    def __init__(self):
        self.stack = []
        self.min_stack = []

    def push(self, val: int) -> None:
        self.stack.append(val)
        if len(self.min_stack) == 0: # min stack empty
            self.min_stack.append(val)
        else:
            self.min_stack.append(min(val, self.min_stack[-1])) # "new smallest" or "copy last smallest"

    def pop(self) -> None:
        result = self.stack.pop()
        del self.min_stack[-1] 

        return result

    def top(self) -> int:
        return self.stack[-1]


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


# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(val)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()

算法說明

設計類題目,我們使用兩個 stack 來處理,
一個紀錄目前 stack 的狀況,另外一個用來記錄 min_stack 目前的排序。

input handling

x (設計類問題)

Boundary conditions

x (設計類問題)

Reference