155 Min Stack堆疊最小值Python

2021-10-06 10:30:22 字數 1690 閱讀 4930

設計乙個堆疊,以支援在恆定時間內推送,彈出,頂部和檢索最小元素。

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