leetcode|算法之快慢指针

快慢指针 动画演示 快慢指针 #19 删除链表的倒数第N个节点 - 删除链表的倒数第 N 个结点 - 力扣(LeetCode) (leetcode-cn.com)
【leetcode|算法之快慢指针】思想:定义快慢指针,快指针在慢指针之前,也可以叫前后指针,用于删除某个节点,保持不失联

public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummyHead = new ListNode(0); dummyHead.next = head; // 慢指针初始指向虚拟头结点 ListNode slow = dummyHead; // 快指针初始指向虚拟头结点 ListNode fast = dummyHead; // 快指针先向前移动n+1步!!! for(int i = 0; i <= n; i++) { fast = fast.next; }// 快慢指针同时向前移动,直到快指针指向null while (fast!=null){ fast = fast.next; slow = slow.next; }// 慢指针的下一个节点即待删除节点 ListNode delNode = slow.next; // 慢指针的后继指针指向待删除节点的下一个节点 // 这样就将待删除节点删除了 slow.next = delNode.next; delNode.next = null; return dummyHead.next; }

    推荐阅读