leetcode142. 环形链表 II

news2025/1/31 8:21:41

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

不允许修改 链表。

示例 1:

在这里插入图片描述
输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
在这里插入图片描述
输入:head = [1,2], pos = 0
输出:返回索引为 0 的链表节点
解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:

在这里插入图片描述
输入:head = [1], pos = -1
输出:返回 null
解释:链表中没有环。

思路:
当链表访问到一个节点的时候,在对应的哈希表中查找此节点是否出现过,若出现过,则说明当前节点就是环形链表的头节点,否则查找下一个节点,若最终找nullptr则说明,在此链表中没有环,返回NULL

#include <iostream>
#include <algorithm>
#include <vector>
#include <unordered_map>

using namespace std;

struct ListNode {
	int val;
	ListNode* next;
	ListNode() : val(0), next(nullptr) {}
	ListNode(int x) : val(x), next(nullptr) {}
	ListNode(int x, ListNode* next) : val(x), next(next) {}
};
ListNode* detectCycle(ListNode* head) {
	unordered_map<ListNode*, bool> m;//哈希表解法
	while (head != nullptr)//遍历链表
	{
		if (m[head] == false)
			m[head] = true;//第一次出现
		else
			break;//第一个重复的节点为环的入口
		head = head->next;//下个节点
	}
	return head;
}
int main() {
	ListNode node1, node2, node3, node4;
	node1.val = 3;
	node1.next = &node2;
	node2.val = 2;
	node2.next = &node3;
	node3.val = 0;
	node3.next = &node4;
	node4.val = -4;
	node4.next = &node2;
	ListNode* res = detectCycle(&node1);
	return 0;
}

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

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

相关文章

vue3+electron开发桌面软件(7)——修改注册表,创建级联菜单

系列文章目录 系列第一篇&#xff1a; vue3electron开发桌面软件入门与实战&#xff08;0&#xff09;——创建electron应用 文章目录 系列文章目录前言一、创建右键级联菜单二、了解注册表结构1.手动添加注册表——一级菜单2.手动添加注册表——二级菜单父菜单3.手动添加注册…

IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告

银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本&#xff1a;银河麒麟桌面操作系统V10 厂商名称&#xff1a; 广州荣士电子有限公司 认证产品&#xff1a;IC-14W网络IC卡读写器 测试日期&#xff1a; 2022-11-04 …

基于SVG的HMI组件

人机界面是自动化领域不可或缺重要组成部分。人机界面系统的设计看上去并没有太大的技术门槛&#xff0c;但是设计一个HMI系统的工作量是巨大的&#xff0c;如果你没有足够的耐心和精力是难以完成一个通用HMI系统的。构建UI控件库就是一个似乎永远完不成的事情&#xff0c;用户…

12.基于蒙特卡洛抽样的电动汽车充电负荷计算

说明书 MATLAB代码&#xff1a;基于蒙特卡洛抽样的电动汽车充电负荷计算 关键词&#xff1a;电动汽车 蒙特卡洛模拟 抽样 充放电负荷 参考文档&#xff1a;《主动配电网多源协同运行优化研究_乔珊》第3.2节&#xff0c;完全复现 仿真平台&#xff1a;MATLAB 优势&#xf…

JavaWeb——IO、存储、硬盘、文件系统相关常识

目录 一、IO 1、定义 二、存储和硬盘 1、存储 2、硬盘 三、文件系统 1、文件 &#xff08;1&#xff09;、定义 &#xff08;2&#xff09;、分类 &#xff08;3&#xff09;、操作 2、树形结构和目录 3、路径 &#xff08;1&#xff09;、定义 &#xff08;2&…

elementui是怎么做表单验证的?

文章目录 前言elementui是怎么做表单验证&#xff1f;步骤 一、 表单验证校验代码&#xff1f;二、el-button提交验证代码2.validate方法深入了解1. 有参数2. 无参数 总结 前言 在项目开发中&#xff0c;我们经常会遇到表单保存的功能&#xff0c;在表单保存前&#xff0c;常常…

Salesforce如何防止黑客攻击和数据泄露?了解他们的安全措施!

安全性一直是Salesforce密切关注的问题。Google的安全浏览报告指出&#xff0c;2022年网络钓鱼网站的数量增加了80&#xff05;。面对着黑客攻击、安全漏洞、数据泄露等不安全事件频发&#xff0c;实施更强大的安全措施比以往更加重要。 调查显示&#xff0c;电子邮件目前是网…

阿里巴巴图标,font-family字体样式

阿里巴巴官网&#xff1a;https://www.iconfont.cn/ 如有需要&#xff0c;请注意到文章最后的问题。 一&#xff0c;图标 1&#xff0c;搜索关键词&#xff0c;点击图标 -> 加入购物车 -> 添加到项目 2&#xff0c;两种方式 &#xff08;1&#xff09;选择 Font cla…

推荐一个好工具,可以替代 swagger 生成文档

Swagger 是一个规范且完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口&#xff0c;可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 S…

SpringBoot扫包排除指定包(配置文件形式)

1、背景​ 在有些时候&#xff0c;不同环境可能需要用代码不同模块的能力&#xff0c;但是不同环境的项目包是一致的。这块我们想到的最简单的办法是在maven打包的时候打不同的模块&#xff0c;但是这样往往需要出多个包&#xff0c;虽然这种方式是正路但运维同学嫌麻烦。第二种…

Java面试题--MySQL索引

一. 索引介绍 MySQL的索引是一种数据结构&#xff0c;它可以帮助MySQL快速定位需要访问的记录。索引可类比于一本书的目录&#xff0c;通过它可以快速找到某个特定的记录。 MySQL支持多种类型的索引&#xff0c;每种索引都有其优势和局限性&#xff0c;常用的包括&#xff1a…

python类型转换

我们就想那我们目前接触到的三种类型做一下转换 分别是 字符串 浮点数 正整数 可能会有刚接触编程的小伙伴在想 没事类型转换什么呢&#xff1f; 其实在实际开发中 这东西用的不要太多 根据我们目前认识的类型 先用到三个方法 我们编写代码 String_int str(111); print(St…

初阶数据结构——时间复杂度和空间复杂度

目录 算法效率算法的复杂度 时间复杂度时间复杂度的概念习题 空间复杂度空间复杂度的概念习题 什么是数据结构&#xff1f; 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。 什么是算法&#xff1f; 算法…

java+ssm603企业人事档案管理系统带前端springboot

人事管理系统的设计与实现采用Spring、SpringMVC和MyBatis作为主体框架,系统设计遵循界面层、业务逻辑层和数据访问层的Web开发三层架构。采用B/S结构,使得系统更加容易维护。人事管理系统的设计与实现主要实现角色有管理员和用户,管理员在后台管理资料文件模块、员工模块、文件…

深度相机初体验:Hello World

当我的组长给了我一个深度相机&#xff0c;倒霉的事情就开始了&#xff0c;在使用的过程中遇到的某些问题搜不到&#xff0c;头秃啊呜呜呜呜呜呜呜呜 配置&#xff1a; ubuntu20.04&#xff08;我实在是懒得去升级了&#xff0c;一旦升级就可能会出现找不到教程的可能性&#x…

运行时内存数据区之执行引擎(一)

执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念&#xff0c;这两种机器都有代码执行能力&#xff0c;其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的&#xff0c;而虚拟机的执行引擎则是由软…

【MATLAB基础绘图第8棒】绘制局部放大图

MATLAB绘制局部放大图 1 工具准备 MATLAB官网-ZoomPlot(Kepeng Qiu. Matlab Central, 2022) 初始数据图绘制完成后&#xff0c;调用以下代码&#xff1a; %% 添加局部放大 zp BaseZoom(); zp.plot;1.1 具体绘制步骤 具体绘制步骤如下&#xff1a; 通过鼠标左键框选作图区…

JavaScript中如何删除对象/数组中null、undefined、空对象及空数组实例代码

如下&#xff0c;对于一个多层嵌套的数据结构&#xff1a;例如 要做的就是删除所有value为空&#xff0c;数组为空&#xff0c;对象为空的字段 const querys {name: 测试,httpMethod: ,httpHeaders: [{key: Accept,value: test,},],restParams: [{key: ,value: ,},],body: {b…

GZIPOutputStream GZIPInputStream 数据压缩解压

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 数据压缩&解压 前言一、最终走上了压缩的路 GZIPOutputStream二、收到数据进行解压 GZIPInputStream三、测试Demo四、验证结果总结 前言 最近接手了一批性能优化… 遇到…

全注解下的SpringIoc

Spring架构中的核心理念就是IOC和AOP&#xff0c;可以说&#xff0c;Spring的强大离不开这两大特性。 因为spring boot推荐采用注解开发&#xff0c;所以文中主要介绍基于注解的Spring Ioc。 IoC容器简介 Spring IoC 容器是个管理 Bean&#xff08;在Spring 中把每个需要管理…