LeetCode-环形链表问题

1.环形链表(141)

题目描述:

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

在这里插入图片描述
思路: 定义快慢指针,快的指针步长为2,慢的指针步长为1,如果链表中有环则快指针最后肯定会追上慢指针,循环条件要注意考虑到偶数个节点以及奇数个节点的问题,这体现在快指针fast!=null&&fast.next!=null这个循环条件上。

代码:

public class Solution {public boolean hasCycle(ListNode head) {ListNode fast=head;ListNode slow=head;while(fast!=null&&fast.next!=null) {fast=fast.next.next;slow=slow.next;if(fast==slow) {return true;}}return false; }
}

2.环形链表 II(142)

题目描述:

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
在这里插入图片描述
因为这题涉及到数学,没接触过的人想做出来比较困难,比如我。下面给出官方题解中的思路:
在这里插入图片描述

总结一下就是根据数学计算,当快指针赶上慢指针时,该位置到入环点的距离与开始节点到入环点的距离相等,由此去求入环点的地址。
代码思路: 首先还是设置快慢指针,得到相遇节点。之后再将慢指针移动到开始节点和快指针一起以步长为1的速度进行移动,最终两指针相遇的节点就是入环节点。

代码:

public class Solution {public ListNode detectCycle(ListNode head) {ListNode fast = head;ListNode slow = head;while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;if (fast == slow) {break;}}if (fast == null || fast.next == null) {return null;}slow = head;while (slow != fast) {fast = fast.next;slow = slow.next;}return fast;}
}

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

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

相关文章

三叠云工程劳务管理,优化建筑施工管理,提升效率与质量

随着建筑行业的蓬勃发展,工程施工现场管理变得愈发复杂。传统的人员管理方式已经无法满足企业快速发展的需求。如何提高施工效率、优化人力资源管理成为了建筑企业亟待解决的问题。逐渐走向数字化的工程建设行业,急需一种足以匹配这一时代变革、高效管理…

渗透测试——1.3计算机网络基础

一、黑客术语 1、肉鸡:被黑客攻击电脑,可以受黑客控制不被发现 2、端口(port):数据传输的通道 3、弱口令:强度不高,容易被猜到的口令、密码 4、客户端:请求申请电脑(…

SQL实践篇(二):为什么微信用SQLite存储聊天记录?

文章目录 简介什么是SQLite在python中使用SQLite通过SQLite查询微信的聊天记录参考文献 简介 SQLite是一个嵌入式的开源数据库引擎,大小只有3M左右,因此我们可以将整个SQLite嵌入到应用中,而不再需要采用传统的客户端/服务器(CS&…

《试题与研究》期刊发表投稿方式

《试题与研究》杂志是面向全国公开发行的国家CN级权威教育期刊。创刊以来一直以服务教育服务学生为办刊宗旨,以优秀的内容质量和编校质量深受广大读者好评,其权威性、导向性、针对性、实用性在全国教育期刊中独树一帜。为推动教育科研事业的发展&#xf…

【K8S in Action】服务:让客户端发现pod 并与之通信(2)

一 通过Ingress暴露服务 Ingress (名词) 一一进入或进入的行为;进入的权利;进入的手段或地点;入口。一个重要的原因是每个 LoadBalancer 服务都需要自己的负载均衡器, 以及 独有的公有 IP 地址, 而 Ingres…

CentOS进入单用户模式

一、重启 二、出现内核选项 按“e” 三、编辑这一行 输入 rw init/sysroot/bin/sh 四、进入单用户模式 ctrlx 进入 五、切换目录 chroot /sysroot 六、然后你就操作你的系统了。 修改密码等等

httprunner环境变量

前言 我的上一篇文章讲了httprunner的基本介绍,这篇文章呢主要来给大家介绍httprunner中的环境变量。 一般来说,在进行实际应用的开发过程中,应用会拥有不同的运行环境,通常会有以下环境: 本地开发环境 测试环境 生产…

8 缺失数

无脑蛮力 #include <iostream> #include <vector>using namespace::std; using std::cout; using std::cin; int main() {int num;vector<int> nums;while(cin >> num){nums.push_back(num);if(getchar()\n) {break;}}int t,nnums.size();for(int i0…

MyBatis——MyBatis的动态SQL

MyBatis的动态SQL 创建工程&#xff1a; 1.什么是动态SQL? MyBatis的映射文件中支持在基础SQL上添加一些逻辑操作&#xff0c;并动态拼接成完整的SQL之后再执行&#xff0c;以达到SQL复用、简化编程的效果。 2.if标签 我们根据实体类的不同取值&#xff0c;使用不同的SQL语…

每次maven刷新jdk都要重新设置

pom.xml <java.version>17</java.version> 改为<java.version>1.8</java.version>

linux:下载、网络请求、端口

一&#xff1a;ping命令 可以通过ping命令,检查指定的网络服务器是否是可联通状态 语法: ping [-c num] ip或主机名 1、选项&#xff1a;-c,检查的次数&#xff0c;不使用-c选项&#xff0c;将无限次数持续检查 2、参数&#xff1a;ip或主机名&#xff0c;被检查的服务器的…

个人百度百科词条怎么创建?

什么人可以上百科&#xff1f;个人百度百科词条的创建通常针对公众人物、知名专家、学者、艺术家、企业家等具有一定社会影响力和知名度的人物。所以当你拥有一个百度百科词条的时候&#xff0c;知名度和形象自然会显著提升。个人百度百科词条怎么创建&#xff1f;接下来伯乐网…