天天看點

<LeetCode天梯>Day042 最小棧 | 初級算法 | Python

以下為我的天梯積分規則:

每日至少一題:一題積分+10分

若多做了一題(或多一種方法解答),則當日積分+20分(+10+10)

若做了三道以上,則從第三題開始算+20分(如:做了三道題則積分-10+10+20=40;做了四道題則積分–10+10+20+20=60)

初始分為100分

若差一天沒做題,則扣積分-10分(周六、周日除外注:休息)

堅持!!!

初級算法

刷題目錄

設計問題

<LeetCode天梯>Day042 最小棧 | 初級算法 | Python

題幹

設計一個支援 push ,pop ,top 操作,并能在常數時間内檢索到最小元素的棧。

push(x) —— 将元素 x 推入棧中。

pop() —— 删除棧頂的元素。

top() —— 擷取棧頂元素。

getMin() —— 檢索棧中的最小元素。

示例:

輸入:

[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”]

[[],[-2],[0],[-3],[],[],[],[]]

輸出: [null,null,null,null,-3,null,0,-2]

解釋: MinStack minStack = new MinStack(); minStack.push(-2);

minStack.push(0); minStack.push(-3); minStack.getMin(); --> 傳回 -3.

minStack.pop(); minStack.top(); --> 傳回 0. minStack.getMin();

–> 傳回 -2.

棧操作

這道題讓我們自定義一個棧,有push,pop,top,min四個函數。這題和官方的Stack相比就多了一個min函數。我們用python實作,有内置函數,其實還是很香很友善的,哈哈哈

class MinStack:
    def __init__(self):
        self.stack = list()

    def push(self, val: int) -> None:
        self.stack.append(val)

    def pop(self) -> None:
        self.stack.pop()

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

    def getMin(self) -> int:
        return min(self.stack)      
<LeetCode天梯>Day042 最小棧 | 初級算法 | Python