zoukankan      html  css  js  c++  java
  • 【手绘漫画】图解LeetCode之删除链表的倒数第N个节点(LeetCode 19题)

    在这里插入图片描述

    图解LeetCode刷题计划

    1、写在前面

    手绘漫画系列正式上线!!!“图解LeetCode刷题计划” 来了!!!

    今天是第十一期,争取每天一期,最多两天一期,欢迎大家监督我。。。

    我就是个鸽子。。。
    在这里插入图片描述
    开始做链表了,昨天发了单链表的操作,每日一遍,养成习惯!
    在这里插入图片描述

    2、题目

    首先看一下题目,
    在这里插入图片描述
    可能上来你一看,真简单啊,结果看错题了,因为题中说的是倒数第 n 个,傻了吧。

    这里只讲一趟扫描实现的过程,即,双指针做法,好了,废话少说,开始了。
    在这里插入图片描述
    在这里插入图片描述

    3、正文

    好了,来一起看一下。

    首先创建一个虚拟头结点,和头结点相连,定义两个指针。

    先让 firstn 个位置,然后两个指针开始同时运动,这样两个指针的间隔固定为 n,只要 first 走到尾结点,那么 second 的下一个位置就是要删除的节点位置。
    在这里插入图片描述
    删除节点的操作,比较简单,指针改变一下就完事了。

    最后返回虚拟节点的下一个位置,而不是头结点,因为头结点可能改变,但是虚拟节点一定不变!!!
    在这里插入图片描述

    4、代码

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* removeNthFromEnd(ListNode* head, int n) {
            auto fic=new ListNode(0);
            fic->next=head;
            auto first=fic,second=fic;
            while(n--){
                first=first->next;
            }
            while(first->next){
                first=first->next;
                second=second->next;
            }
            second->next=second->next->next;
            return fic->next;
        }
    };
    

    在这里插入图片描述
    在这里插入图片描述

    如果有幸帮到你,请帮我点个【赞】,给个【关注】!如果能顺带【评论】给个鼓励,我将不胜感激。

    如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~

  • 相关阅读:
    Licp
    [持续更新]Python 笔记
    求 LCA 的三种方法
    一些题目(4)
    欧几里得算法与扩展欧几里得算法
    最近打的三场比赛的总结
    10day2
    10day1
    chrome谷歌浏览器插件制作简易教程
    nodejs net模块
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302565.html
Copyright © 2011-2022 走看看