29. 删除链表的倒数第 N 个结点

1. 题目描述

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

2. 题解
public class Solution29 {

    public ListNode removeNthFromEnd(ListNode head, int n) {
        // 创建一个虚拟头节点,方便操作
        ListNode dummy  = new ListNode(0);
        dummy.next = head;

        // 初始化两个指针
        ListNode first = dummy;
        ListNode second = dummy;

        // 让第一个指针先走n步
        for (int i = 0; i <= n; i++) {
            first = first.next;
        }

        // 同时移动两个指针,直到第一个指针到达链表末尾
        while (first != null) {
            first = first.next;
            second = second.next;
        }

        // 删除倒数第n个节点
        second.next = second.next.next;

        // 返回新的头节点
        return dummy.next;
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容