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

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

说明:不允许修改给定的链表。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:tail connects to node index 1
解释:链表中有一个环,其尾部连接到第二个节点。


示例 2:

输入:head = [1,2], pos = 0
输出:tail connects to node index 0
解释:链表中有一个环,其尾部连接到第一个节点。


示例 3:

输入:head = [1], pos = -1
输出:no cycle
解释:链表中没有环。

思路:

慢指针一次一步,快指针一次两步。能相遇就是有环,反之没有环。

让一个指针从头走,另一个从相遇点开始走,然后再次相遇的地方就是入环点,不明白的画一画,想一想操场跑步就明白了。

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {private ListNode getIntersect(ListNode head) {ListNode tortoise = head;ListNode hare = head;while (hare != null && hare.next != null) {tortoise = tortoise.next;hare = hare.next.next;if (tortoise == hare) {return tortoise;}}return null;
}public ListNode detectCycle(ListNode head) {if (head == null) {return null;}ListNode intersect = getIntersect(head);if (intersect == null) return null;ListNode ptr1 = head;ListNode ptr2 = intersect;while (ptr1 != ptr2) {ptr1 = ptr1.next;ptr2 = ptr2.next;}return ptr1;}
}

leetcode142 环形链表II相关推荐

  1. leetcode142. 环形链表 II

    leetcode142. 环形链表 II 题目描述 链接: leetcode142. 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整 ...

  2. leetcode-142 环形链表II

    给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 - ...

  3. leetcode142. 环形链表 II(暴力+双链表)

    一:题目 二:思路 1.双指针 快慢指针(快指针一次一个结点,慢指针一次两个结点) 2.如果有环的话,那么快慢指针肯定会相遇 3.那么相遇的地点一定在环中 因为如果没有环的话慢指针是永远追不到快指针的 ...

  4. LeetCode 142. 环形链表 II(Linked List Cycle II)

    142. 环形链表 II 142. Linked List Cycle II 题目描述 给定一个链表,返回链表开始入环的第一个节点.如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整 ...

  5. LeetCode-链表-142. 环形链表 II

    描述 142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 ...

  6. 142. 环形链表 II golang

    142. 环形链表 II 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始 ...

  7. LeetCode 142 环形链表 II

    题目描述 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null.为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开 始). 如果 po ...

  8. 【LeetCode】【HOT】142. 环形链表 II(快慢指针)

    [LeetCode][HOT]142. 环形链表 II 文章目录 [LeetCode][HOT]142. 环形链表 II package hot;class ListNode{int val;List ...

  9. 代码随想录Day04 | LeetCode24. 两两交换链表中的节点、LeetCode19. 删除链表的倒数第N个节点、LeetCode160. 链表相交、LeetCode142. 环形链表Ⅱ

    LeetCode24. 两两交换链表中的节点 力扣题目链接 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 ...

最新文章

  1. 什么是网络推广浅析如何提高搜索引擎的抓取频次?
  2. php连接MYSQL(1)
  3. python安装系统要求_python需要什么系统 | window重装系统教程
  4. 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)
  5. 函数运用_月隐学python第10课
  6. Python中socket入门例子
  7. 网页Loading,让页面加载完再显示
  8. 全国计算机棋类竞赛,自主招生认可的12类主流竞赛详解
  9. android汉字转url,Android将文本中的URL转换为超链接工具类(原文本有超链接标签也适用)...
  10. 机器人、威胁情报、对抗机器学习以及深度学习是如何影响安全领域的
  11. 203.移除链表元素
  12. 学计算机编程有什么用,编程是什么 学习编程的好处
  13. 让你相见恨晚的Photoshop 技巧
  14. notepad打开java乱码_notepad打开中文乱码
  15. Android实用视图动画及工具系列之九:漂亮的图片选择器,高性能防崩溃图片选择工具
  16. netgen.5.0.0下载地址与Windows下编译方法
  17. 建设工程管理系统(二)
  18. 【Shell】awk命令--输出某列,列求和,列求平均值,列最大值,列去重复,取倒列,过滤行,匹配,不匹配,内置变量|定义分隔符|多个分隔符...
  19. SqlSugar.SqlSugarException: English Message : Connection open error . 给定关键字不在字典中
  20. 转:数据可视化之美:经典案例与实践解析

热门文章

  1. python10的因数_十五道Python小案例,学会这些,Python基础已过关!
  2. arcmap添加WMTS服务
  3. WebDAV, IIS, 和SharePoint之间的关系
  4. IsPostBack须要注意的地方,这些都不是POSTBACK动作
  5. TFS(Team Foundation Server)敏捷使用教程
  6. linux中sybase删除数据库,Linux_Sybase ASE数据库的常见问题解答,1 数据库占用磁盘空间的形式 - phpStudy...
  7. Hexo 博客本地预览报错:Error: listen EADDRINUSE 0.0.0.0:4000
  8. 115网盘linux 下载速度慢,linux vps 上 下载115网盘 的方法
  9. 下载matlab安装包太慢_Matlab2017a软件安装包以及安装教程
  10. 【LeetCode1046】最后一块石头的重量(堆heap)