0
点赞
收藏
分享

微信扫一扫

LeetCode.19 删除链表的倒数第n个元素

Villagers 2023-01-14 阅读 52

1.题目

给你一个链表,删除链表的倒数第 ​​n​ 个结点,并且返回链表的头结点。

 


2.代码

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummyHead = new ListNode();//创建一个虚拟节点
dummyHead.next = head;//使虚拟节点的下一个结点指向头结点
ListNode slow = dummyHead;//定义一个慢指针
ListNode fast = dummyHead;//定义一个快指针
for(int i=0; i<n+1; i++){
fast = fast.next;//先让快指针移动n+1步
}
while(fast!=null){//只要满足条件就继续移动slow和fast
slow = slow.next;
fast = fast.next;
}
//运行出来到这一步表示slow指向了要删除元素的上一步
slow.next = slow.next.next;//表示删除元素
return dummyHead.next;//返回此时的头结点
}
}



3.图解

LeetCode.19 删除链表的倒数第n个元素_删除元素

LeetCode.19 删除链表的倒数第n个元素_链表_02


LeetCode.19 删除链表的倒数第n个元素_头结点_03


LeetCode.19 删除链表的倒数第n个元素_链表_04










举报

相关推荐

0 条评论