Python3求棧最小元素

2021-09-07 18:20:21 字數 1219 閱讀 8476

[本文出自天外歸雲的]

思路:入棧時靠輔助棧記住主棧元素中最小的,出棧時一直pop主棧元素直到輔助棧棧頂元素出現。

**如下(定義棧、超級棧):

class

stack(object):

def__init__

(self):

self.items =

defpush(self, ele):

defpeek(self):

return self.items[-1]

defpop(self):

top =self.items.pop()

return

topclass

superstack(stack):

def__init__

(self):

self.stack =stack()

self.temp =stack()

#入棧的時候把最小的元素放到輔助棧棧頂

defpush(self, ele):

if self.temp.items ==:

self.temp.push(ele)

elif ele

self.temp.push(ele)

self.stack.push(ele)

#出棧的時候一直pop直到等於輔助棧棧頂元素的元素出現

defpop(self):

min =self.temp.peek()

while

true:

if self.stack.peek() !=min:

print(f'

pop:')

else

:

print(f'

min:')

break

if__name__ == '

__main__':

ss =superstack()

ss.push(22)

ss.push(3)

ss.push(33)

ss.push(4)

ss.push(55)

ss.push(12)

ss.push(13)

ss.push(16)

ss.pop()

執行結果:

求棧的最小元素

2.設計包含min函式的棧。定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min push以及pop的時間複雜度都是o 1 思路 我看到這道題目時,第一反應就是每次push乙個新元素時,將棧裡所有逆序元素排序。這樣棧頂元素將是最小元素。但由於不能保證最後push進棧的元素最...

求棧中的最小元素

定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素,要求函式min push以及pop的時間複雜度都是o 1 主要難點 將當前最小的元素min出棧之後,如何快速找到下乙個最小的元素?因此需要乙個輔助棧,每次push乙個新元素的時候,同時將最小元素push到輔助棧中 每次pop乙個元素出棧...

python3 刪除字典元素

python不關心鍵 值對的新增順序,而只關心鍵和值之間的關聯關係。pop 刪除給定健對應的值,如 dict.pop key key不能為空 clear 清空字典內容,dict.clear popitem 隨機刪除字典內容,dict.popitem 使用del語句刪除字典的鍵 值對 fruits p...