题目:
思路:
首先计算链表中有多少个节点,然后将对应的节点删除,主要还是指针的移动,将指针移动到要删除的结点的前一个,然后用p.next = p.next.next这样删掉倒数第n个结点。
这里要注意的是:当 n == count 时,也就是删除第一个节点时,注意不能只是移动p,而是要移动头节点head,不然会出现错误。
可以通过画图来理解。
代码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
count = 0
p = head
while p:
count+=1
p = p.next
if n == count:
head = head.next
else:
p = head
for i in range(count-n-1):
p = p.next
p.next = p.next.next
return head
结果:
关于LeetCode的解题方法欢迎大家一起讨论~