亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

IndexError: ,在這種情況下如何在不定義方法的情況下檢查列表中的最后一個元素是否為空?

IndexError: ,在這種情況下如何在不定義方法的情況下檢查列表中的最后一個元素是否為空?

Go
忽然笑 2022-12-26 09:59:56
這是一個 leet 代碼問題,因此沒有定義樹。但這里是 TreeNode 類定義:(不適用于我的問題,但無論如何都在這里):Definition for a binary tree node.class TreeNode:def __init__(self, val=0, left=None, right=None):    self.val = val    self.left = left    self.right = right所以,這就是我所做的,但失敗了,因為列表為空時無法訪問。問題出現在### 指示的行上。class Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:    stack=[]    output=[]    node = root    while True:        if node:            if (node.right != None):                stack.append(node.right)            stack.append(node)            node=node.left        elif stack:            check=stack.pop()            if (check.right != None) & (check.right == stack[-1]):     ###                node=stack.pop()                stack.append(check)            else:                output.append(check.val)                node=None        else:            break    return output錯誤:IndexError: list index out of rangeif (check.right != None) & (check.right == stack[-1]):Line 27 in postorderTraversal (Solution.py)ret = Solution().postorderTraversal(param_1)Line 57 in _driver (Solution.py)_driver()Line 68 in <module> (Solution.py)因此,我在 # 指示的行上添加了一個方法來執行堆棧 [-1] 的檢查以避免超出范圍的錯誤。def check_stack(stack):if stack:    return stack[-1]else:    return Noneclass Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:    stack=[]    output=[]    node = root    while True:        if node:            if (node.right != None):                stack.append(node.right)            stack.append(node)            node=node.left        elif stack:            check=stack.pop()            if (check.right != None) & (check.right == check_stack(stack)): #                node=stack.pop()                stack.append(check)            else:                output.append(check.val)                node=None        else:            break    return output在這種情況下,是否有更簡單的方法(無需創建新方法和更少的代碼行)來執行堆棧 [-1] 檢查而不影響其他條件語句的順序?
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

check_stack您可以通過使用切片獲取堆棧的最后一個元素而不是訪問特定索引來避免該函數。


在這種情況下,如果堆棧中沒有元素,您將得到空列表而不是None。


例如:


stack = [1,2]

stack[-1:] # 2


stack = []

stack[-1:] # []


查看完整回答
反對 回復 2022-12-26
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號