力扣 141.环形链表和142.环形链表2

目录

  • 1.环形链表Ⅰ解题思路
  • 2.环形链表Ⅰ代码实现
  • 3.环形链表Ⅱ解题思路
  • 4.环形链表Ⅱ代码实现

1.环形链表Ⅰ解题思路

利用快慢指针,快指针一次走两个,慢指针一次走一个,如果出现了快指针为空或者快指针的next为空的现象则说明不带环,但如果带环,那么快指针就一定能够追上慢指针,原理如下在这里插入图片描述

2.环形链表Ⅰ代码实现

bool hasCycle(struct ListNode *head){  if(head==NULL)return false;if(head->next==NULL)return false;struct ListNode *fast=head;struct ListNode *slow=head;while(fast){   if(fast->next==NULL)return false;fast=fast->next->next;slow=slow->next;if(fast==slow&&fast!=NULL)return true;}
return false;
}

3.环形链表Ⅱ解题思路

首先利用环形链表Ⅰ的思路可以求出快慢指针相遇时指针的位置则可设此位置距离循环开始的位置距离为X,设从开头到循环点的距离为L,环的长度为C,则慢指针走的路程就为L+X,而且快指针走的距离就为L+n*C+X,则由数学公式推理可得:一个指针从相遇点走,另一个指针从开头走,则他们会在循环入口点相遇,由此特性就可得出循坏的开始点.

在这里插入图片描述

4.环形链表Ⅱ代码实现

struct ListNode *detectCycle(struct ListNode *head) 
{   if(head==NULL)return NULL;if(head->next==NULL)return NULL;struct ListNode *fast=head;struct ListNode *slow=head;while(fast){   if(fast->next==NULL)return NULL;fast=fast->next->next;slow=slow->next;if(fast==slow&&fast!=NULL)break;}if(fast==NULL)return NULL;struct ListNode *p=head;while(p!=fast){
fast=fast->next;
p=p->next;}
return fast;}

结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海康Visionmaster-全局脚本:方案加载完成信号发给通 信设备的方法

需要在方案加载完成后,发送加载完成信号到全局变量,发送给通信设备。 全局脚本的使用可以通过打开示例,完成常用的基本功能开发。 打开全局通信代码后,在脚本中添加代码

Netty入门指南之传统通信的问题

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言多线程…

【Mybatis小白从0到90%精讲】01:IDEA创建Maven项目,添加Mybatis依赖

文章目录 前言一、IDEA创建Maven项目二、添加依赖前言 Mybatis开发,我们从创建一个Maven项目项目开始,推荐使用的开发工具是IDEA,接下来演示使用IDEA创建Maven项目,并添加Mybatis依赖,每一步对应都有配图,Let’s Go~ 一、IDEA创建Maven项目 打开IDEA,点击左上角菜单:F…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 失物招领小程序 设计与实现

一.项目介绍 失物招领小程序 用户登录、忘记密码、退出系统 发布失物 和 发布招领 查看我发布的失物和招领信息 失捡物品模块可以查看和搜索所有用户发布的信息。 二.环境需要 1.运行环境:java jdk1.8 2.ide环境:IDEA、Eclipse、Myeclipse都可以&#…

春招秋招,遇到在线性格测评要不要真实做?

找工作是一个不衰的话题,不仅仅是大学毕业生们,职场人都绕不过去的话题。如今越来越的企业采用在线测评,很多盆友都遇到了,测评挂了不明觉厉...纷纷发提问救助,怎么才能过测评? 先说原因 求职的人多了&am…

Sam Altman再出手,投资了两个不到20岁的RPA创业者

“AI到底是变革还是泡沫?” 作者 | 王王 首图来源:IndiaTimes Sam Altman又出手了。这次他投资了一个只有5个人的RPA早期团队Induced AI,两位联合创始人Aryan Sharma和Ayush Pathak,一个18岁,一个19岁。 不只是Sam A…

[架构之路-254/创业之路-85]:目标系统 - 横向管理 - 源头:信息系统战略规划的常用方法论,为软件工程的实施指明方向!!!

目录 总论: 一、数据处理阶段的方法论 1.1 企业信息系统规划法BSP 1.1.1 概述 1.1.2 原则 1.2 关键成功因素法CSF 1.2.1 概述 1.2.2 常见的企业成功的关键因素 1.3 战略集合转化法SST:把战略目标转化成信息的集合 二、管理信息系统阶段的方法论…

Redis高级数据类型-HyperLogLogBitmap以及使用两种数据类型完成网站数据统计

网站数据统计 定义相关的Redis Key /*** 单日UV*/public static String getUVKey(String date) {return PREFIX_UVSPLITdate;}/*** 记录区间UV* param startData 开始日期* param endDate 结束日期* return*/public static String getUVkey(String startData,String endDate){r…

Git同时配置Gitee和GitHub

Git同时配置Gitee和GitHub 一、删除原先ssh密钥二、生成密钥 这里的同时配置是针对于之前配置过单个gitee或者github而言的,如果需要看git从安装开始的配置,则可以看这一篇文章 git安装配置教程 一、删除原先ssh密钥 在C盘下用户/用户名/.ssh文件下找到…

KaiOS APN配置文件apn.json调试验证方法(无需项目全编)

1、KaiOS 的应用就类似web应用,结合文件夹路径webapp字面意思理解。 2、KaiOS APN配置文件源代码在apn.json, (1)apn.json可以自定义路径,通过配置脚本实现拷贝APN在编译时动态选择路径在机器中生效。 (…

MyBatis 分页插件 PageHelper 6.0.0 发布

6.0.0 - 2023-11-05 基于jdk8适配,6.0开始不支持jdk6和7,如果有需要可以使用5.x版本增加异步count支持,全局配置asyncCount,默认false,单次设置:PageHelper.startPage(1, 10).enableAsyncCount(); 异步使用…

Crypto(8) BUUCTF-bbbbbbrsa1

题目描述: from base64 import b64encode as b32encode from gmpy2 import invert,gcd,iroot from Crypto.Util.number import * from binascii import a2b_hex,b2a_hex import randomflag "******************************"nbit 128p getPrime(nbit)…