簡體   English   中英

最小堆棧解決方案不適用於leetcode

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM