LeeCode题库第十九题
项目场景:
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
示例 1:
输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1 输出:[]
示例 3:
输入:head = [1,2], n = 1 输出:[1]
提示:
- 链表中结点的数目为
sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz
问题描述
这题通过初始化两个节点first和second,首先将first向后移动n次,这样两个节点之间就差n个节点,当first不为空时,一直向后移动两个节点,直至first为空,两者之间差n个,则second为倒数n+1个,second.next为倒数第n个, second.next=second.next.next即可,最后返回头结点dummy.next,不返回head是因为如果n为1,head也会被改变,所以使用dummy虚拟节点,返回dummy.next。
# 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: Optional[ListNode], n: int) -> Optional[ListNode]:
dummy=ListNode(0,head)
first=head
second=dummy
for i in range(n):
first=first.next
while first:
first=first.next
second=second.next
second.next=second.next.next
return dummy.next
本题提交情况。
以上为本篇文章的全部内容,感谢你抽出宝贵的时间阅读这篇文章。如果你有任何疑问或建议,欢迎在评论区留言,我们一起交流进步。愿你的代码之路越走越顺,生活充满阳光!