腾讯常考十道算法真题:删除链表的倒数第 N 个结点

2022-03-2709:56:21数据结构与算法Comments1,257 views字数 714阅读模式

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/23778.html

腾讯常考十道算法真题:删除链表的倒数第 N 个结点

示例 :文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/23778.html

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

这道题可以使用双指针解决。既然我们要找到倒数第n个节点,我们可以使用两个指针first 和 second同时对链表进行遍历,并且first 比second超前 n个节点。当 first遍历到链表的末尾时,second 就恰好处于倒数第n个节点。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/23778.html

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode dummy = new ListNode(0, head);
        ListNode first = head;
        ListNode second = dummy;
        //first 比second先走n个节点
        for (int i = 0; i < n; ++i) {
            first = first.next;
        }
        //直到走到链表尾部
        while (first != null) {
            first = first.next;
            second = second.next;
        }
        //删除节点
        second.next = second.next.next;
        ListNode ans = dummy.next;
        return ans;
    }
}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/23778.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/suanfa/23778.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定