LeetCode 155. 最小棧 Python
阿新 • • 發佈:2018-12-12
設計一個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。
- push(x) -- 將元素 x 推入棧中。
- pop() -- 刪除棧頂的元素。
- top() -- 獲取棧頂元素。
- getMin() -- 檢索棧中的最小元素。
示例:
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2.
class MinStack: def __init__(self): """ initialize your data structure here. """ self.stack = [] def push(self, x): if not self.stack:#當前的stack為空 self.stack.append([x,x])#第一個值表示當前值,第二個值表示目前為止的最小值 else: min1 = self.getMin()#得到當前的最小值,由於保證了stack非空,因此這個值一定存在 if min1 < x: self.stack.append([x,min1]) else: self.stack.append([x,x]) """ :type x: int :rtype: void """ def pop(self): if not self.stack: return self.stack.pop() """ :rtype: void """ def top(self): """ :rtype: int """ if not self.stack: return return self.stack[-1][0] def getMin(self): if not self.stack: return return self.stack[-1][1] # Your MinStack object will be instantiated and called as such: # obj = MinStack() # obj.push(x) # obj.pop() # param_3 = obj.top() # param_4 = obj.getMin()