題目出處
難度
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 (設計類問題)