一.
#這個程式不知道是不是比較嚴格的正確。不過對於測試的程式來看,還是比較符合的。這個只是涉及到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...