牛客热题:链表中环的入口结点

📟作者主页:慢热的陕西人

🌴专栏链接:力扣刷题日记

📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言

在这里插入图片描述

文章目录

  • 牛客热题:**链表中环的入口结点**
    • 题目链接
    • 方法一:哈希表
      • 思路
      • 代码
      • 复杂度
    • 方法二:快慢指针
      • 思路
      • 代码
      • 复杂度

牛客热题:链表中环的入口结点

题目链接

链表中环的入口结点_牛客题霸_牛客网 (nowcoder.com)

方法一:哈希表

思路

  • 遍历链表,然后将每一个节点的地址存储在哈希表
  • 当我们遇到已经被遍历过的节点,那么我们认为这个节点就是对应的环的入口

代码

class Solution {
public:ListNode* EntryNodeOfLoop(ListNode* pHead) {unordered_set<ListNode*> hash;while(pHead != nullptr){if(hash.count(pHead)) return pHead;else hash.insert(pHead);pHead = pHead->next;}return nullptr;}
};

复杂度

  • **时间复杂度:**O(N), 遍历了一次链表
  • **空间复杂度:**O(N), 创建了一个哈希表,这个哈希表的最大大小也就是链表的长度

方法二:快慢指针

思路

通过定义slow和fast指针,slow每走一步,fast走两步,若是有环,则一定会在环的某个结点处相遇(slow == fast),根据下图分析计算,可知从相遇处到入口结点的距离头结点与入口结点的距离相同

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码

class Solution {
public:ListNode* EntryNodeOfLoop(ListNode* pHead) {if(pHead == nullptr) return pHead;ListNode* l = pHead;ListNode* r = pHead;while(r != nullptr && r->next != nullptr){//快指针走两步,慢指针走一步r = r->next->next;l = l->next;if(l == r) break;}//不存在环的情况if(r == nullptr || r->next == nullptr) return nullptr;//重新指向链表头部r = pHead;//与第一次相遇的节点相同的速度出发,相遇的节点为入口节点while(l != r){l = l->next;r = r->next;}return r;}
};

复杂度

  • **时间复杂度:**O(N), 遍历了一次链表
  • **空间复杂度:**O(1), 创建了两个指针

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

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

相关文章

Mac shell 环境变量配置

官网上的解释。从 macOS Catalina 开始&#xff0c;Mac 使用 zsh 作为默认登录 Shell 和交互式 Shell。你还可以在较早版本的 macOS 中将 zsh 设置为默认 Shell。 在 Mac 上将 zsh 用作默认 Shell - 官方 Apple 支持 (中国) 用命令查看 echo $SHELL 如果返回/bin/zsh 表示是…

C++中的数据结构与算法

随处可见的红黑树 一般会用到[key,value]。 例如github中这个例子&#xff0c;第一个是访问网站&#xff0c;第二个是访问次数&#xff0c;但是这个不是静态的&#xff0c;这有个动态排序&#xff0c;并且当我们需要让相应的访问次数加1的时候&#xff0c;我们用红黑树查找的时…

Flutter 弃用 WillPopScope 使用 PopScope 替代方法

Flutter 弃用 WillPopScope 使用 PopScope 替代方法 视频 https://youtu.be/u3qdqUvFWiM https://www.bilibili.com/video/BV1aJ4m1n7FZ 前言 原文 https://ducafecat.com/blog/migrating-from-willpopscope-to-popscope-in-flutter 了解如何在 Flutter 3.16 中将弃用的 Wil…

【Mac】Mac安装软件常见问题解决办法

前言 刚开始用Mac系统的小伙伴或者在更新系统版本后运行App的朋友会经常碰到弹窗提示「xxx已损坏&#xff0c;无法打开&#xff0c;您应该将它移到废纸篓」、「打不开xxx&#xff0c;因为Apple无法检查其是否包含恶意软件」、「打不开xxx&#xff0c;因为它来自身份不明的开发…

Github 2024-05-01 开源项目日报Top10

根据Github Trendings的统计,今日(2024-05-01统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目2JavaScript项目2Vue项目1非开发语言项目1Rust项目1MyShell: 即时语音克隆和开发者社区 创建周期:39 天开发语言:P…

C++每日一练——两个数组的交集

给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2]示例 2&#xff1a; 输入&#xff1a;nums…

SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测(Matlab)

SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测&#xff08;Matlab&#xff09; 目录 SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测&#xff08;Matlab&#xff09;预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现MFO-CNN…

alsactl 保存音频配置

在root下执行 1、关闭音频通道 amixer cset numid2,ifaceMIXER,namePlayback Path OFF2、保存关闭的音频通道 alsactl store -f /var/lib/alsa/asound.state3、恢复保存关闭的音频配置 alsactl restore -f /var/lib/alsa/asound.state4、打开音频通道 amixer cset numid2,ifac…

设计模式的原则与分类

一、设计模式的原则 1、单一职责原则 一个类只需要负责一种职责即可&#xff0c;一个类发生变化的原因&#xff0c;必然是所负责的职责发生变化 2、接口隔离原则 单一职责原则是接口隔离原则的基础&#xff0c;单一职责原则注重职责的划分&#xff0c;从职责角度进行类和接口…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.4--汇编LED驱动程序

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

自定义SpringBoot的starter

案例需求&#xff1a;自定义redis-stater。要求当导入redis坐标时&#xff0c;SpringBoot自动创建Jedis的Bean。 实现步骤&#xff1a; 1、创建redis-spring-boot-autoconfigure模块 2、创建redis-spring-boot-starter模块&#xff0c;依赖redis-spring-boot-autoconfigure的…

4G远程温湿度传感器在农业中的应用—福建蜂窝物联网科技有限公司

解决方案 农业四情监测预警解决方案 农业四情指的是田间的虫情、作物的苗情、气候的灾情和土壤墒情。“四情”监测预警系统的组成包括管式土壤墒情监测站、虫情测报灯、气象站、农情监测摄像机&#xff0c;可实时监测基地状况,可以提高监测的效率和准确性&#xff0c;为农业生…

Linux内核--设备驱动(三)总线、设备、驱动模型的探究

目录 一、引言 二、设备驱动模型的实现 ------>2.1、platform总线 ------>2.2、驱动与设备的匹配 ------>2.3、设备的探测 ------>2.4、设备驱动模型的改善 三、设备与驱动的匹配流程 ------>3.1、各级设备的展开 ------>3.2、platform 设备 -----…

【云原生】Docker 实践(一):在 Docker 中部署第一个应用

Docker 实践&#xff08;一&#xff09;&#xff1a;在 Docker 中部署第一个应用 1.使用 YUM 方式安装 Docker2.验证 Docker 环境3.在 Docker 中部署第一个应用3.1 小插曲&#xff1a;docker pull 报 missing signature key 错误3.2 重新安装 Nginx 1.使用 YUM 方式安装 Docker…

2024年教你怎么将学浪视频保存到本地

你是否曾为无法将学浪视频保存到本地而烦恼&#xff1f;现在&#xff0c;我们将在2024年教给你如何解决这个问题&#xff01;只需简单几步操作&#xff0c;即可轻松将学浪视频保存到您的本地设备&#xff0c;随时随地想看就看&#xff01; 我已经将下载学浪的工具打包好了&…

Vue+Element UI el-progress进度条内显示自定义数字及文字

需求 进度条内展示 具体的数字值&#xff0c;进度条外展示 百分比数值 数据 data() {return {reNum: 3214,rePer:40,warmPer: 40,warmNum:2132,}}因为样式要求&#xff0c;显示的百分数也是自己写的哈 &#xff0c;没有用进度条自带的 代码 <div class"pick"&g…

(八)Servlet教程——创建Web项目以及Servlet的实现

1. 打开Idea编辑器 2. 点击界面上的“新建项目”按钮 3. 设置好项目名称和位置 应用服务器选择之前设置好的Tomcat服务器 构建系统默认选择Maven 4. 点击“下一步”按钮 5. 点击“完成”按钮&#xff0c;Idea就创建好了项目&#xff0c;创建完成后的目录结构如下图所示 6. 此…

网络安全之弱口令与命令爆破(中篇)(技术进阶)

目录 一&#xff0c;什么是弱口令&#xff1f; 二&#xff0c;为什么会产生弱口令呢&#xff1f; 三&#xff0c;字典的生成 四&#xff0c;使用Burpsuite工具验证码爆破 总结 笔记改错 一&#xff0c;什么是弱口令&#xff1f; 弱口令就是容易被人们所能猜到的密码呗&a…

笨蛋学C++【C++基础第十弹】

C基础第十弹 CSTL教程vector容器&#xff08;有限扩容&#xff09;vector构造函数vector赋值方式vector的容量和大小vector的插入和删除vector获取元素vector互换容器vector预留空间&#xff08;大量数据&#xff09;vector遍历方法容器自定义数据类型vector迭代容器 strng容器…

Java各种List实现类以及特点

目录 1. ArrayList 2. LinkedList 3. Vector 4. Stack 5. CopyOnWriteArrayList 1. ArrayList 特性: 基于动态数组实现。提供快速的随机访问能力。在列表末尾添加/删除元素非常快&#xff0c;但在列表中间插入/删除元素可能需要移动元素&#xff0c;较慢。每次自动增长时…