代码随想录算法训练营第4天| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

news2024/11/17 20:20:33
  • 今日学习的文章链接,或者视频链接

第二章 链表part02

  • 自己看到题目的第一想法

  • 看完代码随想录之后的想法

24:

注意链表的操作:

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        auto dummyhead = new ListNode(0,head);
        auto prev = dummyhead;
        auto cur = head;
        while (cur != nullptr&&cur->next != nullptr){
            auto tmp = cur->next;
            auto tmp_next = tmp->next;
            prev -> next = tmp;
            tmp->next = cur;
            cur->next = tmp_next;
            prev = cur;
            cur = tmp_next;
        }
        return dummyhead->next;
    }
};

19:

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* dummyhead = new ListNode(-1,head);
        ListNode* fast = dummyhead;
        ListNode* slow = dummyhead;
        for(int i = 0; i < n+1; i++){
            fast = fast->next;
        }
        while(fast != nullptr){
            fast = fast -> next;
            slow = slow -> next;
        }
        slow -> next = slow -> next -> next;
        return dummyhead->next;
    }
};

不用dummyhead版本,各种处理边界条件:

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        //ListNode* dummyhead = new ListNode(-1,head);
        ListNode* fast = head;
        ListNode* slow = head;
        int flag = 1;
        for(int i = 0; i < n+1; i++){
            if (fast != nullptr)
            {
                fast = fast->next;
            }else{
                flag = 0;
                break;
            }
        }
        while(fast != nullptr){
            fast = fast -> next;
            slow = slow -> next;
        }
        if (flag==1||slow!=head&&slow -> next != nullptr){
            slow -> next = slow -> next -> next;
        }else{
            return head->next;
        }       
        return head;
    }
};

02.07

奇妙解法:

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        auto curA = headA;
        auto curB = headB;
        while (curA != curB){
            if (curA == nullptr){
                curA = headB;
            }else{
                curA = curA->next;
            }
            curB = curB == nullptr?headA:curB->next;
        }
        return curA;
    }
};

142:

class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        auto fast = head;
        auto slow = head;
        //fast 走两步,所以判断fast和fast->next
        while (fast != nullptr && fast->next != nullptr) {
            fast = fast->next->next;
            slow = slow->next;
            if (fast == slow) {
                break;
            }
        }
        if (fast == nullptr || fast->next == nullptr) {
            return nullptr; // No cycle found
        }
        fast = head;
        while(fast!=slow){
            fast = fast->next;
            slow = slow->next;
        }
        return fast;
    }
};

 

  • 自己实现过程中遇到哪些困难

  • 今日收获,记录一下自己的学习时长

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache Doris (五) :Doris分布式部署(二) FE扩缩容

目录 1. 通过MySQL客户端连接Doris ​​​​​​​​​​​​​​2. FE Follower扩缩容 ​​​​​​​3. FE Observer 扩缩容 ​​​​​​​​​​​​​​4. FE扩缩容注意点 进入正文之前&#xff0c;欢迎订阅专题、对博文点赞、评论、收藏&#xff0c;关注IT贫道&#…

超详细|粒子群优化算法及其MATLAB实现

本文主要介绍粒子群算法的背景与理论&#xff0c;并结合对应部分的MATLAB程序对其实现流程做了阐述&#xff0c;代码获取方式见文末。 00 文章目录 1 粒子群优化算法 2 问题导入 3 MATLAB程序实现 4 改进策略 5 展望 01 粒子群优化算法 1.1 粒子群优化算法背景 近年来&…

亿发软件:智慧中药房信息化建设,中医药安全煎煮解决方案

传统的中药饮片煎煮服用较为繁琐&#xff0c;局限了诸多人群的使用。为了优化医疗服务,并满足患者不断增长的中医药需求&#xff0c;智慧中药房的概念应运而生。智慧化中药房通过信息化和自动化相结合&#xff0c;旨在提高中药处方的管理和效率。下面就让我们了解一下中药配方颗…

创建一个nuxt项目

yarn create nuxt-app ssr 启动项目 如果使用npm run start 可能会报错&#xff0c;提示需要配置为开发环境 可以先执行npm run dev 看看

HPM6750系列--第三篇 搭建MACOS编译和调试环境

一、目的 在上一篇《HPM6750系列--第二篇 搭建Ubuntu开发环境》我们介绍了Ubuntu上开发HPM6750&#xff0c;本篇主要介绍MAC系统上的开发环境的搭建过程&#xff0c;整个过程和Ubuntu上基本类似。 二、准备 首先我们在Mac电脑上打开一个terminal&#xff0c;然后创建一个…

苹果Vision Pro手势+眼球融合交互的奥秘

毫无疑问&#xff0c;Vision Pro在眼球追踪手势的融合交互体验上&#xff0c;给AR/VR头戴设备带来了新突破&#xff0c;在用户体验上的提升非常明显。 ​那么&#xff0c;为什么Vision Pro上这一功能会被如此值得关注呢&#xff1f;为了弄清楚&#xff0c;我们先来看看主流VR设…

037:mapboxGL输入经纬度,地址坐标转换,弹出位置点地址信息

第037个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中输入经纬度,地址坐标转换,弹出位置点地址信息. 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共158行)相关API参考:专栏目标示例效果 配置方式…

配置Jenkins slave agent(通过jnlp)方式连接

上一章&#xff0c;使用ssh的方式添加了两个agent&#xff0c;并都成功完成了构建任务&#xff0c;这一章使用jnlp的方式配置agent&#xff0c;jnlp方式配置agent有个好处&#xff0c;就是agent是主动去找到Master请求连接的&#xff0c;master->agent的通道可以配置一个age…

【AUTOSAR】BMS开发实际项目讲解(二十九)----电池管理系统电池充放电功率控制与SOC

电池充放电功率控制 关联的系统需求 Sys_Req_3901、Sys_Req_3902、Sys_Req_3903、Sys_Req_3904; 功能实现描述 电池充放电功率控制主要包括以下内容&#xff1a; 60S可用功率 参见[CELL] 30S可用功率 参见[CELL] 10S可用功率 参见[CELL] SOP算法 ID Description ASI…

LVDS接口ADC要点数据采集流程

一&#xff1a;要点 1.如果两片AD&#xff0c;四路输出做了同步化处理之后&#xff0c;一定只用同步化模块读时钟&#xff08;一片AD的时钟&#xff09;去上传数据&#xff0c;到DDR3模块。 2.ADS42和LTC2208的ADC的数据伴随时钟都来源与输入的采样时钟&#xff08;有些采样时…

虚拟机上用docker + nginx跑前端并支持https和http

情况是这样&#xff0c;我在虚拟机上&#xff0c;使用docker跑前端&#xff0c;需要这个前端支持https&#xff0c;原http的话自动跳转到https。另外&#xff0c;前端部署使用了负载均衡&#xff0c;即使用了3个docker跑前端&#xff1a;1个入口&#xff0c;另外2个是前端&…

Wi-Fi模块(ESP8266)详解

Wi-Fi模块——ESP8266 0. Wi-Fi模块概述1. 常见的Wi-Fi模块2. ESP8266模块2.1 概念2.2 特点 3. STM32F103C8T6使用ESP8266进行无线通信的示例代码 0. Wi-Fi模块概述 Wi-Fi模块是一种用于无线通信的设备&#xff0c;它能够通过Wi-Fi技术实现设备之间的无线数据传输和互联网连接…

java面试Day18

1.什么是 MySQL 执行计划&#xff1f;如何获取执行计划并对其进行分析&#xff1f; MySQL 执行计划是指 MySQL 查询优化器生成的一份详细的查询执行计划&#xff0c;它展示了 MySQL 在执行查询时所采取的具体执行计划&#xff0c;包括表的访问顺序、数据读取方式、使用的索引、…

大模型入局传统算法,LLMZip基于LLaMA-7B实现1MB文本压缩率90%!

论文链接&#xff1a; https://arxiv.org/abs/2306.04050 随着以ChatGPT、GPT-4为代表的AI大模型逐渐爆火进入公众视野&#xff0c;各行各业都开始思考如何更好的使用和发展自己的大模型&#xff0c;有一些评论甚至认为大模型是以人工智能为标志的第四次产业革命的核心竞争产品…

11.窗口看门狗-WWGD

1.窗口看门狗概述&#xff1a; &#xff08;1&#xff09;之所以称为窗口是因为其喂狗时间是一个有上下限的范围内(窗口)&#xff0c;可以通过设定相关寄存器&#xff0c;设定其上限时间(下限时间固定)。喂狗的时间不能过早也不能过晚。而独立看门狗限制喂狗时间在0-x内&#…

Zigbee模块(CC2530)详解

Zigbee模块&#xff08;CC2530&#xff09; 0. Zigbee概述1. 常见的Zigbee模块2. CC2530模块3. STM32使用CC2530模块方法代码模板 0. Zigbee概述 Zigbee是一种无线通信协议&#xff0c;专为低功耗、低数据速率的应用而设计。它工作在2.4 GHz频段&#xff0c;常用于家庭自动化、…

MYSQL-SELECT语句超详解

目录 前言: SELECT语法 示例 单个字段查询 多个字段查询 查询所有字段 没有FROM的SELECT 查询系统时间 数值计算 虚拟表dual WHERE语句 示例 AND OR 比较运算符 AND OR 运算符优先级 IN NOT IN BETWEEN NOT BETWEEN LIKE EXISTS ORDER BY LIMIT …

SpringBoot(三)SpringBoot搭建简单服务端

之前的两篇文章介绍了如何使用ItelliJ社区版创建SpringBoot项目以及SpringBoot的starter。本篇&#xff0c;介绍下如何使用SpringBoot搭建一个简单的服务端&#xff0c;实现一个新用户注册的场景&#xff0c;供前端和移动端去使用。本篇需要你对SpringBoot的starter&#xff0c…

基于LLM构建文本生成系统

背景&#xff1a; 在流量存量时代&#xff0c;内容运营重要性不言而喻。在流量时代&#xff0c;内容可以不要过于多样化和差异化&#xff0c;只需要有足够多的人流量&#xff0c;按流量转化比率来看&#xff0c;1000个人有1%概率转化&#xff0c;素材不变只要增加足够多的流量…

SpringSecurity之概述

概述 是一个功能强大且高度可定制的身份验证和访问控制框架&#xff1b; 是一个专注于为Java应用程序提供身份验证和授权的框架 核心功能 1.认证 2.验证 3.攻击防范 原理解析 SpringSecurity 采用的是责任链的设计模式&#xff0c;它有一条很长的过滤器链&#xff1b; WebAsy…