python實現 棧的最小值 力扣題

2021-10-03 03:05:55 字數 1367 閱讀 7114

題目:棧的最小值

具體描述

請設計乙個棧,除了常規棧支援的pop與push函式以外,還支援min函式,該函式返回棧元素中的最小值。執行push、pop和min操作的時間複雜度必須為o(1)。

示例:

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.stack1=

#棧 self.stack2=

#存放最小值的list

defpush

(self, x:

int)

->

none:if

len(self.stack2)==0

:else:if

(self.stack2[-1

]> x)

:else:-

1])def

pop(self)

->

none

: self.stack1.pop(

) self.stack2.pop(

)def

top(self)

->

int:

return

(self.stack1[-1

])defgetmin

(self)

->

int:

return

(self.stack2[-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()

力扣 面試題 03 02 棧的最小值 雙棧

思路 搞個雙棧,乙個棧就做正常的操作,另外乙個棧搞成單調非增的即可。有兩種實現方式。class minstack void push int x void pop int top int getmin private 正常的棧 stack int s 單調非公升棧 stack int min you...

LeetCode力扣 最小棧

最小棧 就是在棧中新增乙個求棧中最小元素的方法 問題描述設計乙個棧,其中包括 示例 結果 minstack minstack new minstack 無返回minstack.push 2 無返回minstack.push 0 無返回minstack.push 3 無返回minstack.getmi...

力扣 155 最小棧

設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。class minstack public void pop public int top publi...