是不是一碗粉 2021-06-13 19:54 采纳率: 100%
浏览 126
已采纳

为什么第一个while循环条件为False仍会运行?

 这是Leetcode的第496题,

我知道代码不能通过是因为我没有改第十七行标志位isFound的值,

我想知道的是为什么 stack.length != 0 为 False 的情况下仍会进入循环,最后提示

pop from emptylist。

from Stack_FUO import Stack

def nextGreaterElement(nums1,nums2):
    stack = Stack()
    res = []
    temp = Stack()

    for num in nums2:
        stack.push(num)

    for num in nums1:
        isFound = False
        nextmax = -1
        while (stack.length != 0 and not isFound):
            top = stack.pop()
            if top > num:
                nextmax = top
            elif top == num:
                isFound = False
            temp.push(top)
        res.append(nextmax)
        while temp.length() != 0:
            stack.push(temp.pop())
    return res

nums1 = [4,1,2]
nums2 = [1,3,4,2]
print(nextGreaterElement(nums1,nums2))

以下是class Stack模块的代码:

class Stack:
    def __init__(self):
        self.items = []

    def isEmpty(self):      # 是否为空
        return self.items == []

    def push(self,item):    # 入栈
        self.items.append(item)

    def pop(self):          # 出栈
        return self.items.pop()

    def peek(self):         # 取栈顶
        if len(self.items) != 0:
            return self.items[-1]
        else:
            return None

    def clear(self):        # 清空栈
        self.items = []

    def length(self):       # 查看栈的长度
        return len(self.items)

以下是错误截图:

 

  • 写回答

2条回答 默认 最新

  • 是不是一碗粉 2021-06-13 20:24
    关注

    这啥稀奇古怪的错误啊?

    你的循环条件stack.length后面没有加小括号。。。

    正确格式为

    stack.length        # 错误格式
    stack.length()      # 正确格式
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?