一、题目
给定一个链表,删除链表的倒数第n个节点,并返回头节点。

二、思路
1、创建虚拟头节点,利用快慢指针。快指针先走n+1步,然后快慢指针一起走,当快指针走向null时,慢指针走向删除的节点的前一个节点,然后删除掉节点。
三、代码
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy = new ListNode(0,head);
ListNode fast = dummy, 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;
}
}
317

被折叠的 条评论
为什么被折叠?



