leetcode 142. Linked List Cycle II 环形链表 II
一、题目大意
https://leetcode.cn/problems/linked-list-cycle-ii/
给定一个链表的头节点  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
解释:链表中没有环。
提示:
- 链表中节点的数目范围在范围 [0, 104] 内
- -105 <= Node.val <= 105
- pos 的值为 -1 或者链表中的一个有效索引
进阶:你是否可以使用 O(1) 空间解决此题?
二、解题思路
找链表环路问题有通用的解法,快慢指针。大概思路就是定义两个指针fast,slow初始都指向链表头,fast每次走2步,slow每次走1步,如果fast可以走到头说明没有环路,如果fast可以无限走下去说明有环路,且一定存在一个时刻fast与slow相遇。当fast和slow第一次相遇时将fast重新移到链表头,并让fast和slow每次都前进1步,当fast和slow再次相遇时的节点就是环路开始的节点。
三、解题方法
3.1 Java实现
public class Solution {
    public ListNode detectCycle(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;
        do {
            if (fast == null || fast.next == null) {
                return null;
            }
            fast = fast.next.next;
            slow = slow.next;
        } while (fast != slow);
        fast = head;
        while (fast != slow) {
            fast = fast.next;
            slow = slow.next;
        }
        return fast;
    }
    static class ListNode {
        int val;
        ListNode next;
        ListNode(int x) {
            val = x;
            next = null;
        }
    }
}
四、总结小记
- 2022/5/19 某一类型问题如果有成熟的解决思路能去解决,就要掌握这种思路,我们要学会站在巨人的肩上成长
leetcode 142. Linked List Cycle II 环形链表 II的更多相关文章
- [LeetCode] 142. Linked List Cycle II 链表中的环 II
		Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ... 
- [LeetCode] 142. Linked List Cycle II 单链表中的环之二
		Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To r ... 
- (链表 双指针) leetcode 142. Linked List Cycle II
		Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To r ... 
- Java for LeetCode 142 Linked List Cycle II
		Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ... 
- [LC]141题 Linked List Cycle (环形链表)(链表)
		①中文题目 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. 示例 ... 
- 【LeetCode】Linked List Cycle II(环形链表 II)
		这是LeetCode里的第142道题. 题目要求: 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 说明:不允许修改给定的链表. 进阶:你是否可以不用额外空间解决此题? ... 
- 142 Linked List Cycle II 环形链表 II
		给一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null.说明:不应修改给定的链表.补充:你是否可以不用额外空间解决此题?详见:https://leetcode.com/proble ... 
- leetcode 142. Linked List Cycle II
		Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ... 
- leetcode 142. Linked List Cycle II ----- java
		Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ... 
随机推荐
- 攻防世界upload1
			upload1 进入环境就一个上传,我们先上传一个普通的木马文件看看 木马内容 <?php @eval($_POST["cmd"]); ?> 估计是前端校验我们查看源码 ... 
- Web Storage相关
			访问原文地址 概述 DOM存储的机制是通过存储字符串类型的键/值对,来提供一种安全的存取方式.这个附加功能的目标是提供一个全面的,可以用来创建交互式应用程序的方法(包括那些高级功能,例如可以离线工作一 ... 
- Linux 0.11源码阅读笔记-总结
			总结 Linux 0.11主要包含文件管理和进程管理两个部分.进程管理包括内存管理.进程管理.进程间通信模块.文件管理包含磁盘文件系统,打开文件内存数据.磁盘文件系统包括空闲磁盘块管理,文件数据块的管 ... 
- spring框架Aop学习
- 用反射实现JavaBean和Map之间的转换
			学习内容: 需求 由于JavaBean结构与Map类似,我们可以把JavaBean与Map进行转换 代码如下: package com.yy; import java.beans.BeanInfo; ... 
- echarts饼图去除圈外指向横线
			series: [ { name: '实时人员信息', type: 'pie', radius: ['86%', '80%'], avoidLabelOverlap: false, label: { ... 
- 10. MySQL基础-02条件查询、排序查询
			2. 条件查询 语法  select 查询列表 from 表名 where 筛选条件: 分类 按条件表达式筛选 简单的条件运算符:> < = != <> >= ⇐ 按逻 ... 
- HCIE-SEC笔记-EVENG模拟器安装
			EVEng模拟器安装: 准备:Vmware 16.0 EVEng EVE-NG-Win-Client-Pack.exe [抓包,内置wireshark,内置vnc,用来打开windows系统] Win ... 
- android软件简约记账app开发day02-收入支出明细页面绘制
			android软件简约记账app开发day02-收入支出明细页面绘制 效果图 列表界面绘制 新建layout文件-item_mainlv.xml大体使用绝对布局,嵌套相对布局,嵌套文本内容实现 < ... 
- partOne当堂测试代码
			/* ScoreInformation类*/public class ScoreInformation { private String stunumber;//学号 private String n ... 
