LeetCode19 删除链表的倒数第 N 个结点
LeetCode19 删除链表的倒数第 N 个结点
题目链接:LeetCode19
描述
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
示例
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
思路
定义fast指针和slow指针,初始值为虚拟头结点
fast首先走n + 1步
fast和slow同时移动,直到fast指向末尾
删除slow指向的下一个节点
代码
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy = new ListNode();
dummy.next = head;
ListNode fast = dummy;
ListNode slow = dummy;
while(n-- >= 0){
fast = fast.next;
}
while(fast != null){
slow = slow.next;
fast = fast.next;
}
slow.next = slow.next.next;
return dummy.next;
}
}