Algorithm 从列表末尾删除第n个节点LeetCode
我正在进行LeetCode挑战: 给定链表的Algorithm 从列表末尾删除第n个节点LeetCode,algorithm,linked-list,Algorithm,Linked List,我正在进行LeetCode挑战: 给定链表的头,从链表末尾移除nth节点并返回其头 跟进:你能一次完成吗 我的代码在某些测试用例中失败: 我得到这份报告: 我已经阅读了解决方案,看起来我的解决方案和我写的是一样的,但是我不知道我的错误在哪里。我的代码如下: def removeNthFromEnd(self,head:ListNode,n:int)->ListNode: 指针1=头 指针2=头 计数=0 如果不是指针1.next: 返回指针1.next 虽然指针2不是无: 如果计数>n: 指针1
头
,从链表末尾移除n
th节点并返回其头
跟进:你能一次完成吗
我的代码在某些测试用例中失败:
我得到这份报告:
我已经阅读了解决方案,看起来我的解决方案和我写的是一样的,但是我不知道我的错误在哪里。我的代码如下:
def removeNthFromEnd(self,head:ListNode,n:int)->ListNode:
指针1=头
指针2=头
计数=0
如果不是指针1.next:
返回指针1.next
虽然指针2不是无:
如果计数>n:
指针1=指针1.next
指针2=指针2.next
计数+=1
pointer1.next=pointer1.next.next
回流头
我已经做了半个小时了,我想不出怎么解决它。有人能帮忙吗?当
n
等于列表中的节点数时,您的解决方案将失败。在这种情况下,您应该从列表中删除第一个节点,因此您应该返回head.next
注意:if
之前的while
循环测试该情况的一个非常特定的实例,即当列表只有一个元素时。但如上所述,此操作应适用于比if
中确定的更一般的情况
因此,可以删除以下if
条件:
如果不是指针1.next:
返回指针1.next
并在while
循环后添加一个条件:
def removeNthFromEnd(self,head:ListNode,n:int)->ListNode:
指针1=头
指针2=头
计数=0
虽然指针2不是无:
如果计数>n:
指针1=指针1.next
指针2=指针2.next
计数+=1
如果计数>n:
pointer1.next=pointer1.next.next
回流头
其他:
返回头部。下一个
尝试将此数组作为输入-[1,2],n为2。你会看到出了什么问题…非常感谢!非常感谢。我接受了你的回答
[1,2]
2
Output [1]
Expected [2]