[英]Min stack solution not working for leetcode
我正在嘗試使用leetcode最小堆棧問題,但是我的代碼無法正常工作,試圖找到解決方案,但看不到問題所在。 它似乎適用於大多數輸入,但是失敗“
[“ MinStack”,“ push”,“ push”,“ push”,“ top”,“ pop”,“ getMin”,“ pop”,“ getMin”,“ pop”,“ push”,“ top”,“ getMin”,“ push”,“ top”,“ getMin”,“ pop”,“ getMin”] [[],[2147483646],[2147483646],[2147483647],[],[],[],[] ,[],[],[2147483647],[],[],[-2147483648],[],[],[],[]]“。
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = []
self.count = 0
self.minEle = -1
def push(self, x: int) -> None:
if self.count == 0:
self.minEle = x
self.stack.append(x)
elif x < self.minEle:
self.stack.append(2*x - self.minEle)
self.minEle = x
elif x >= self.minEle:
self.stack.append(x)
self.count += 1
def pop(self) -> None:
y = self.stack.pop()
if y < self.minEle:
self.minEle = 2*self.minEle - y
self.count -= 1
def top(self) -> int:
if self.count >=1:
return self.stack[(self.count - 1)]
else:
return 0
def getMin(self) -> int:
return self.minEle
嘗試:
class MinStack:
def __init__(self):
self.sc = []
self.sm = []
# @param x, an integer
# @return an integer
def push(self, x):
self.sc.append(x)
if x <= self.getMin():
self.sm.append(x)
return x
# @return nothing
def pop(self):
if self.sc.pop() == self.getMin():
self.sm.pop()
# @return an integer
def top(self):
return self.sc[-1]
# @return an integer
def getMin(self):
try:
return self.sm[-1]
except IndexError:
return self.top()
obj = MinStack()
obj.push(-2)
obj.push(0)
obj.push(-3)
print(obj.getMin())
obj.pop()
print(obj.top())
print(obj.getMin())
param_3 = obj.top()
param_4 = obj.getMin()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.