尋找棧裡面最小的元素,python

2021-08-27 03:13:26 字數 1539 閱讀 6687

一.

#這個程式不知道是不是比較嚴格的正確。不過對於測試的程式來看,還是比較符合的。這個只是涉及到push入棧的早做了,沒有涉及到出棧的操作。功能不夠完善,但是可以實現找到乙個固定棧的最小值

#這個函式的功能是利用時間複雜度為o(1),來實現返回棧裡面最小的元素。

#借助乙個輔助棧,利用它來儲存每次入棧的最小元素。如果只用乙個棧,這樣的時間複雜度是o(n)

class zhan_min(object):

stack_list=

min_list=

min_2=none

def push(self,x):

if not self.stack_list:

else:

if x二.這個是leetcode上面155題的解法,時間複雜度為o(1)

class minstack(object):

def __init__(self):

"""initialize your data structure here.

"""self.stack =

self.minstack =

def push(self, x):

""":type x: int

:rtype: nothing

"""if len(self.minstack) == 0 or x <= self.minstack[-1]:

def pop(self):

""":rtype: nothing

"""if not self.isempty():

if self.top() == self.minstack[-1]:

self.minstack.pop()

self.stack.pop()

return

def top(self):

""":rtype: int

"""if not self.isempty():

return self.stack[-1]

def getmin(self):

""":rtype: int

"""if not self.isempty():

return self.minstack[-1]

def isempty(self):

return len(self.stack) < 1

if __name__ == "__main__":

minstack = minstack()

minstack.push(2)

minstack.push(0)

minstack.push(3)

minstack.push(0)

print(minstack.getmin())

minstack.pop()

print(minstack.getmin())

minstack.pop()

print(minstack.getmin())

minstack.pop()

print(minstack.getmin())

求棧的最小元素

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

求棧中的最小元素

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

返回棧中最小元素

實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返 回棧中最小元素的操作。要求 pop push getmin操作的時間複雜度都是o 1 設計的棧型別可以使用現成的棧結構。public static class stackbymin public void push int newnum els...