You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从递归栈栈底返回值?链表倒数节点删除代码求助

解决方案

这里提供两种可行的修复方案:

方案一:用可变容器传递目标位置

利用列表这类可变对象存储目标位置,避免嵌套函数中局部变量覆盖外层变量的问题:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:25:20