設計乙個堆疊,以支援在恆定時間內推送,彈出,頂部和檢索最小元素。
input:["minstack","push","push","push","getmin","pop","top","getmin"]
[,[-2],[0],[-3],,,,]
output:[null,null,null,null,-3,null,0,-2]
比較好理解的方法:建立乙個空的list,然後push就用insert插入第一位,pop就返回除了第乙個以外的值,top則返回list裡面的第乙個值。
'''
minstack minstack = new minstack()
minstack.push(-2); minstack.push(0)
minstack.push(-3); minstack.getmin() // return -3
minstack.pop(); minstack.top() // return 0
minstack.getmin() // return -2
'''class minstack:
def __init__(self):
"""initialize your data structure here.
"""self.stack=
def push(self, x: int) -> none:
self.stack.insert(0,x)
def pop(self) -> none:
self.stack=self.stack[1:]
def top(self) -> int:
return self.stack[0]
def getmin(self) -> int:
return min(self.stack)
# 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()
這個執行時間少一點
class minstack:
def __init__(self):
self.val =
self.min = float('inf') #初始值為正無窮
def push(self, x: int) -> none:
self.min = min(self.min, x) #每次都選取最小值
def pop(self) -> none:
if len(self.val) > 1:
res = self.val.pop()
self.min = self.val[-1][1] #最後一位[-1]的第二個數[1]
return res
else:
self.min = float('inf')
return self.val.pop()
def top(self) -> int:
return self.val[-1][0]
def getmin(self) -> int:
return self.val[-1][1]
堆疊 155 最小棧
題目 設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 輸入 minstack push push push getmin pop top get...
155實現最小棧
題意 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。方法一 使用輔助棧class minstack def init self self.stack...
leetcode 棧 155 最小棧
設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...