首页 > 其他分享 >LeetCode.19 删除链表的倒数第n个元素

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

时间:2023-01-14 17:31:52浏览次数:43  
标签:slow ListNode val fast next 链表 dummyHead LeetCode.19 倒数第

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










标签:slow,ListNode,val,fast,next,链表,dummyHead,LeetCode.19,倒数第
From: https://blog.51cto.com/u_15806469/6007634

相关文章