七七老师の白日梦
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

删除链表倒数第N个节点:快慢指针,快指针先走

写作时间:2026-07-21 08:54:42

给你一个链表,删除链表的倒数第 n个结点,并且返回链表的头结点。

需求

  • 输出倒数第n个数
  • 返回头节点

实现

  • 快慢指针

代码

class Solution {
    /**
     * 删除链表的倒数第 n 个结点,并返回头结点。
     *
     * @param head 链表头结点
     * @param n    倒数第 n 个结点
     * @return 删除后的链表头结点
     */
    public ListNode removeNthFromEnd(ListNode head, int n) {
//        哨兵节点,处理头节点被删的情况
        ListNode dummy = new ListNode(0, head);
        ListNode fast = dummy;
        ListNode slow = dummy;

        // 快指针先走 n+1 步
        for (int i = 0; i <= n; i++) {
            fast = fast.next;
        }

        // 快慢指针同时前进,直到快指针到达末尾
        while (fast != null) {
            fast = fast.next;
            slow = slow.next;
        }

        // 删除倒数第 n 个结点
        slow.next = slow.next.next;

        return dummy.next;
    }
}

‍

avatar

七七老师

分享代码日常

RECOMMENDED

七七旧事:复盘并改变写博客的方式

2026-07-02 22:54:38

字母异位词

2026-07-04 22:22:08

寻找两个正序数组的中位数:合并与二分

2026-07-08 15:56:26

Table of Contents