如何从递归栈栈底返回值?链表倒数节点删除代码求助
解决方案
这里提供两种可行的修复方案:
方案一:用可变容器传递目标位置
利用列表这类可变对象存储目标位置,避免嵌套函数中局部变量覆盖外层变量的问题:
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]: kth = [-1] # 用列表作为可变容器存储目标位置 def helper(curr, prev, length): if not curr: kth[0] = length - n return length length += 1 length = helper(curr.next, curr, length) if length == kth[0]: prev.next = curr.next return length # 回溯时返回当前节点的位置序号 # 新增dummy节点处理删除头节点的边界情况 dummy = ListNode(0, head) helper(dummy, None, 0) return dummy.next
方案二:让递归函数返回二元组传递信息
让递归函数同时返回当前节点的位置序号和目标位置,在回溯过程中传递该值:
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]: def helper(curr, prev, length): if not curr: target = length - n return (length, target) length += 1 length, target = helper(curr.next, curr, length) if length == target: prev.next = curr.next return (length, target) # 新增dummy节点处理删除头节点的边界情况 dummy = ListNode(0, head) helper(dummy, None, 0) return dummy.next
内容的提问来源于stack exchange,提问作者dim
相关产品推荐
相关产品推荐

