【LeetCode】环形链表I 环形链表II

news2024/12/23 10:08:39

 一、环形链表I 

题目 

思路 

该题使用快慢指针 slow、 fast 

slow 走一步 ,fast 走两步 

当fast 走到空  或者 fast的下一个结点为空, 则无环

fast若追上slow , 则有环

结论证明

该思路默认了 :

若存在环形链表 , 无论两个指针的步差是多少,快指针 一定可以追上 慢指针

下面我们对该结论用数学归纳法进行证明:从简单的情况推广到更普遍的情况

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
bool hasCycle(struct ListNode *head) {
    struct ListNode* slow = head, *fast = head;
    while(fast && fast->next)
    {
        slow = slow -> next;
        fast = fast -> next ->next;
        if(slow == fast)
        {
            return true;
        }
    }
    return false;
}

二、环形链表II 

题目

相比上一题目 ,该题需要我们求入口点。

思路一

结论: 一个指针从链表头节点走 另一个指针从相遇点走  两个指针会在 入口点相遇

结论证明

 

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* detectCycle(struct ListNode* head) {
    struct ListNode *slow, *fast;
    slow = fast = head;
    while (fast && fast->next) {
        slow = slow->next;
        fast = fast->next->next;
        // 找相遇点
        if (slow == fast) {
            struct ListNode* meet = slow;
            while (head != meet) {
                meet = meet->next;
                head = head->next;
            }
            return meet;
        }
    }
    return NULL;
}

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

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

相关文章

阿里云发布通义千问2.5,OpenCompass上得分追平GPT-4 Turbo

5月9日消息,阿里云正式发布通义千问2.5,模型性能全面赶超GPT-4 Turbo,成为地表最强中文大模型。同时,通义千问最新开源的1100亿参数模型在多个基准测评收获最佳成绩,超越Meta的Llama-3-70B,成为开源领域最强…

前端奇怪面试题总结

面试题总结 不修改下面的代码进行正常解构 这道题考的是迭代器和生成器的概念 let [a,b] {a:1,b:2}答案 对象缺少迭代器,需要手动加上 Object.prototype[Symbol.iterator] function* (){// return Object.values(this)[Symbol.iterator]()return yeild* Object.v…

基于Python Django的公务员考试信息管理系统,附源码

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…

简单几步解决Windows 10播放视频提示安装HEVC扩展

相信有不少人都遇到过以下的问题,废话不多说,直接上干货! 1.下载插件 免费地址链接: 点击下载 2.安装插件 如图所示,在下载的目录路径里, 1.按住键盘 SHIFT,点击鼠标右键,选择在此处打开Powe…

5分钟了解下HDFS

随着大数据时代的到来,传统的数据存储和管理方式已经无法满足日益增长的数据处理需求。HDFS(Hadoop Distributed File System)作为Apache Hadoop项目的一部分,以其高度的容错性、可扩展性和高吞吐量,成为了处理大规模数…

ECMAScript 6简介

ECMAScript 6简介 发布日期目标ECMAScript 和 JavaScript 的关系ES6 与 ECMAScript 2015 的关系 ESx标准 命名规则 ECMAScript 的历史 1. ECMAScript 6简介 1.1. 发布日期 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已…

O2OA(翱途)开发平台如何实现待办消息的邮件通知

O2OA(翱途)开发平台[下称O2OA开发平台或者O2OA]的消息机制允许开发者通过配置实现邮件通知。本篇主要阐述如何实现待办消息的邮件通知。 一、先决条件: 1、O2Server服务器正常运行,系统安装部署请参考文档《如何在服务器上安装部署O2OA》 2、以拥有管理…

【网络协议】----IPv6协议报文、地址分类

【网络协议】----IPv6协议简介 【网络协议】----IPv6协议简介IPv6特点IPv4 和 IPv6报文结构IPv6报文格式-拓展报头 IPv6地址分类IPv6地址表示IPv6单播地址可聚合全球单播地址链路本地地址唯一本地地址特殊地址补充 接口标识(主机位)生成方法通过EUI-64规…

Pytorch学习笔记——认识数据

最近在跟着小土堆pytorch的视频跟着学习python,根据自己的理解和课程上面的知识,写了这一篇学习笔记。 1、加载数据 数据的加载是学习pytorch的第一步,我们需要加载数据,完成特征工程,对加载数据存在的一些特…

智慧文旅开启沉浸式文化体验,科技让旅行更生动:借助智慧技术,打造沉浸式文化体验场景,让旅行者在旅行中深度感受文化的魅力

一、引言 随着科技的飞速发展,传统旅游行业正经历着前所未有的变革。智慧文旅,作为一种新兴的旅游模式,正以其独特的魅力,吸引着越来越多的旅行者。智慧文旅不仅改变了人们的旅行方式,更在深度上丰富了人们的文化体验…

09 - 数据清洗案例

流程图 kettle 面板图片 操作步骤 1、订阅数据源(kafka consumer) 2、抽取字段并转换key(JSON input) 3、判断img字段是否有值,有的话进行url转base64(JavaScript 代码) // 获取输入字段的值 v…

Windows内核开发:如何使用STL

前言 大家都知道应用层c的STL非常强大,非常好用,但是在内核下就没法用了。针对这个问题,经过我不懈的寻找,终于找到了解决内核无法使用STL的方法。 使用new/delete关键字 先说一下常用关键字如何在内核中使用。其实只需要在一个全…

C++类和对象详解(一)

目录 面向过程和面向对象初步认识类的引入类的定义类的两种定义方式声明和定义全部放在类体中 声名定义分离 类的作用域成员变量命名规则建议访问限定符 类的封装类的实例化类对象模型类的对象大小的计算扩展 结构体内存对齐规则 感谢各位大佬对我的支持,如果我的文章对你有用,…

Android Ant编译环境配置(Win)

1、 载ant包: 2、设置环境变量: 3、检查是否设置成功及版本 4、执行命令: android update project -p . -n “projectname”(例如:android update project --target 1 -p . -n “Couplet”)(只输入红色部分也是可以的…

GM EPUB Reader Pro for Mac:专业电子书阅读工具

GM EPUB Reader Pro是一款适用于Mac的专业EPUB阅读软件。它为用户提供了优质的阅读体验和丰富的功能。 GM EPUB Reader Pro支持EPUB格式,这是一种广泛使用的电子书格式,常用于小说、教育书籍、期刊等。您可以通过该软件打开和阅读EPUB文件,享…

使用js/java合并3dtiles

目录 前言: 需合并的json目录 aa/tileset.json bb/tileset.json cc/tileset.json dd/tileset.json ee/tileset.json js源码: 运行命令: 生成结果: java源码: Matrix.java ThreeDTilesJoin2.java pom文件…

微服务拆分

目录 前言: 逻辑视图架构风格 一、分层式架构风格 二、六边形架构 如何定义微服务架构 微服务的拆分 业务能力进行服务拆分 子域进行服务拆分 拆分的原则 单一职责 闭包原则 前言: 我们在软件开发的时候一直在谈论架构,那么什么是…

最全计算机毕业设计、大作业项目推荐(毕设源码+论文+PPT)

文章目录 1.毕设源码1.1 JAVA类源码模板1.2 PYTHON类源码模板1.3 C#类源码模板1.4 PHP类源码模板1.5 HTML类源码模板1.6 VUE类源码模板 2.毕设论文3.酷炫PPT 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/138598621 最…

短剧新纪元:引领潮流的短剧小程序开发,一触即达精彩世界

在信息爆炸的时代,短视频以其短小精悍、内容丰富的特点迅速崛起,成为人们日常生活中不可或缺的一部分。然而,短视频的短暂与碎片化,有时难以满足观众对完整故事的需求。为此,我们倾力打造了一款短剧小程序,…

某音扫码,短时间掉线问题,已解决

关于字节系抖音扫码掉线问题,已经困扰挺多人了,基本上你拿之前的逻辑去扫的话,估计几个小时或者一两天就掉线,这个问题呢,目前已经解决短时间掉线问题。抖音的cookie默认是大概60天左右的有效期