力扣 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;

}


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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

将 UniLinks 与 Flutter 集成(安卓 AppLinks + iOS UniversalLinks)

让我们使用 Flutter Mobile 和 Flutter Web 集成 UniLinks。 一步一步的指导! 我是 Pedro Dionsio,是葡萄牙 InspireIT 公司的 Flutter 开发人员,我写这个 UniLinks 教程的座右铭是: Firebase DynamicLinks 已被弃用&#xff0…

vivo 网络端口安全建设技术实践

作者:vivo 互联网安全团队 - Peng Qiankun 随着互联网业务的快速发展,网络攻击的频率和威胁性也在不断增加,端口是应用通信中的门户,它是数据进出应用的必经之路,因此端口安全也逐渐成为了企业内网的重要防线之一&…

【mmcv报错】ModuleNotFoundError: No module named ‘mmcv.runner

跑一个代码需要用到mmcv和mmseg 其中有两行代码: from mmcv.runner import load_checkpoint from mmseg.utils import get_root_logger我先是按照官方推荐的安装方法去安装了mmcv和mmseg pip install -U openmim mim install mmcv它会自动帮你安装mmengine 我的cu…

前后端交互常见的几种数据传输格式

目录 1. get请求 query string 2.form表单get请求 3..form表单post请求 4..json格式 5.总结 1. get请求 query string 前端通过get请求携带 query string(键值对) ,后端通过req.getParameter(key)方法获取数据。如果key不存在,获取到的就…

3款免费又好用的 Docker 可视化管理工具

前言 Docker提供了命令行工具(Docker CLI)来管理Docker容器、镜像、网络和数据卷等Docker组件。我们也可以使用可视化管理工具来更方便地查看和管理Docker容器、镜像、网络和数据卷等Docker组件。今天我们来介绍3款免费且好用的 Docker 可视化管理工具。…

一款好用的PDF转翻页电子书网站

​你是否曾经遇到过PDF文件无法翻页或者阅读不便的问题?今天给大家推荐一款好用的PDF转翻页电子书网站,让你轻松阅读PDF文件,不再烦恼翻页问题! 一、网站介绍 这款FLBOOK在线制作电子杂志网站支持多种电子文件格式转换&#xff0…

vue3中router和route的区别(使用场景)

1.router router是用来对路由进行操作的; 多用于路由跳转、路由守卫、页面刷新、给路由文件添加路由路径或者移除路由路径等等 2.route route是用来获取路由信息的; 多用于获取路由路径、路由传参数据、路由文件配置的属性信息等等

大漠插件(二、Qt使用插件时注意事项)

本章目的 在上篇已经注册完毕大漠,那么怎么使用大漠来制作脚本,我选择了我最熟悉的Qt来开发,毕竟只是小软件,用脚本或者c都差不了多少。本章就是开发途中的一些坑。 本人开发环境是 win11 64、Qt 5.15.2安装了5.10.0的msvc2015 32…

CDS(Core Data Service)Annotation 常用属性

1. 抬头信息 @UI: {headerInfo: {typeName: BP,typeNamePlural: BP,title:{type: #STANDARD, value:ApplyNumber},description:{value:Status}} }2. 行信息/分组 @UI.facet: [{id: bp_Tab1,purpose: #STANDARD,type: #FIELDGROUP_REFERENCE,// type: #LINEITEM_REFERENCE,labe…

Android Datastore 动态创建与源码解析

涉及到的知识点 1、协程原理---->很好的博客介绍,一个小故事讲明白进程、线程、Kotlin 协程到底啥关系? 2、Channel知识点---->Android—kotlin-Channel超详细讲解 3、Coroutines : CompletableDeferred and structured concurrency 封装的DataS…

chatgpt升级啦,训练数据时间更新到2023年4月,支持tools(升级functionCall),128k上下文

(2023年11月7日) gpt-4-1106-preview https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo 训练数据日期升级到2023年四月 上线文增加到128k 调用一次chatgpt接口,可以得到多次函数调用 import OpenAI from "openai"…

5米DEM高程数据分析和对比

数字高程模型(DEM)是应用最广泛的地理信息数据之一,是进行三维空间处理和地形分析的数据基础。每个行业数据精度要求不一样,很多行业使用公开免费的90米和30米分辨率DEM就够了。而城市规划、交通线路规划、地质灾害防控、城区地籍…

制造执行系统(MES)的数据追溯技术

一、什么是数据追溯? 数据追溯是指对产品或过程中产生的各项数据进行记录、存储和索引,并通过可追溯性手段实现对其源头、流向和变化过程的准确追踪和还原。 通过数据追溯,企业可以实现对产品质量、生产过程等关键信息的全面掌握&#…

nuxt项目:vant打包后样式顺序错乱问题及解决方案

不要引入vant/nuxt这个 需要的时候引入即可

Direct3D地形绘制基础

高度图 用高度图来描述地形中的丘陵和山谷,高度图其实就是一个数组,该数组每个元素都指定了地形方格中某一个特定顶点的高度值。通常将高度图视为一个矩阵,这样高度图中的元素就与地形栅格中的顶点一一对应。 高度图被保存在磁盘中,通常为其每个元素元素只分配一个字节存…

腾讯云16核服务器配置有哪些?CPU型号处理器主频性能

腾讯云16核服务器配置大全,CVM云服务器可选择标准型S6、标准型SA3、计算型C6或标准型S5等,目前标准型S5云服务器有优惠活动,性价比高,计算型C6云服务器16核性能更高,轻量16核32G28M带宽优惠价3468元15个月,…

浏览器自动播放音视频-前端实现方案

目录 前言 浏览器自动播放策略 策略详情: 实现方案 方案1: 互动后播放 方案2: 互动后出声 总结 前言 在开发中可能有遇到这样的需求,当用户打开页面后,需要自动播放视频或音频,按理说那就打开页面…

vue 集成高德地图,点击图标,弹出van-action-sheet,一闪而过的问题探究

代码 <van-action-sheet v-model"sheetShow" title""><div class"van-list-vol"><van-col span"3"><div><van-imagestyle"height: 40px; width: 40px"round:src"hospital.orgUrl? hospita…

用友U8定制版在集简云:无需API即可集成客服系统和用户运营

无代码开发的新时代 在这个信息化、自动化的时代&#xff0c;无代码开发已经成为一种新的趋势。集简云就是这样的一款工具&#xff0c;可以轻松连接用友U8 定制版与近千款软件系统&#xff0c;无需开发、无需代码知识就可以打通各种软件之间的数据连接&#xff0c;构建自动化与…

从零开始搭建微服务(一)

构建项目父工程 添加公共核心模块 安装nacos 安装nacos nacos 文档地址&#xff1a; https://nacos.io/zh-cn/docs/what-is-nacos.html 本文使用版本2.2.2 下载地址&#xff1a;https://github.com/alibaba/nacos/archive/refs/tags/2.2.2.zip 使用nacos 我们下载是源代码 解…