题目要求:
给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
分析
图解
流程
构建距离遇到倒数第N个节点类型,一般都会想到快慢指针,让快指针先走N步;
共同移动此时快指针和慢指针之间相隔N位,然后两个指针同时移动;
范围直到快指针的下一位是空
删除节点找到慢指针的下一位
返回值
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode temp = new ListNode();
temp.next = head;
ListNode fast = temp;
ListNode slow = temp;
for(int i = 0; i < n;i++){// 头指针先往前移动k位
fast = fast.next;
}
while(fast.next!=null){
fast=fast.next;
slow=slow.next;
}
slow.next = slow.next.next;
return temp.next;
}
}
get!!!