19、删除链表的倒数第N个节点
文章目录
- 19、删除链表的倒数第N个节点
- 方法一:快慢指针
思路:使用虚拟头节点+快慢指针,fast指针先走n+1,直到为null,slow节点刚好在删除元素前一个位置,方便操作
重点:因为只会删除一个元素,所以只需要取慢指针的下下个元素,下个元素就会被删除
方法一:快慢指针
public ListNode removeNthFromEnd(ListNode head, int n) {// 构建虚拟头节点ListNode dummyHead = new ListNode(0);dummyHead.next = head;//快慢指针同时处于初始位置ListNode fast = dummyHead;ListNode slow = dummyHead;// fast指针先走n+1步for (int i = 0; i < n + 1; i++) {fast = fast.next;}//让fast指针走到末尾,slow指针刚好在要删除元素的前一个位置while (fast != null) {fast = fast.next;slow = slow.next;}//前面走完了,现在开始处理(只会删除一个节点,所以连接slow的下下个节点就可以)slow.next = slow.next.next;return dummyHead.next;}