是不是一碗粉 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 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号