19. 删除链表的倒数第N个节点
程序员文章站
2022-07-14 14:37:34
...
19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
整体思路是让前面的指针先移动n步,之后前后指针共同移动直到前面的指针到尾部为止
代码
/**
* 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 pre = new ListNode(0);
pre.next = head;
ListNode start = pre , end = pre;
//让start结点先走N步
while(n != 0){
start = start.next;
n--;
}
//start和end 同时走
while(start.next != null){
start = start.next;
end = end.next;
}
end.next = end.next.next;
return pre.next;
}
}