难度:简单

频率:155

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

解题方法:快慢指针
解题思路:
1.同时指向head
2.进入循环while判断两指针是否同时为空
3.循环里 快指针走两步,.next.next;慢指针走一步 .next;
如果在循环里 有两指针相遇,则说明有环。
4.跳出循环走到最后则说明没环。

public class Solution {public boolean hasCycle(ListNode head) {ListNode fast = head;ListNode slow = head;// 空链表、单节点链表一定不会有环while (fast != null && fast.next != null) {  //这个里的条件总是漏掉 fast.next!=nullfast = fast.next.next; // 快指针,一次移动两步slow = slow.next;      // 慢指针,一次移动一步if (fast == slow) {   // 快慢指针相遇,表明有环return true;}}return false; // 正常走到链表末尾,表明没有环}
}

主要注意的点:

  • 判断环形 只有一个条件,就是 快慢指针相遇。
  • 肯定不会有环形的 : 1.空链表 。2.单节点。
  • while里面fast != null && fast.next != null 不能换成 fast.next != null && fast!= null。会报空指针异常。 原因是 当fast==null时,fast.next不成立,报空指针异常。

Leetcode 141.环形链表相关推荐

  1. LeetCode 141. 环形链表 简单难度

    ** 141. 环形链表 ** 给定一个链表,判断链表中是否有环. 如果链表中存在环,则返回 true . 否则,返回 false . 解题思路(两种方法): 方法一:用集合set以及set.find ...

  2. LeetCode - 141. 环形链表

    141. 环形链表 import java.util.Objects;class ListNode {int val;ListNode next;ListNode(int x) {val = x;ne ...

  3. LeetCode 141. 环形链表

    原题链接 解题思路:快慢指针,如果快指针被慢指针追上一定是环形链表 /*** Definition for singly-linked list.* struct ListNode {* int va ...

  4. leetcode 141.环形链表 I - 142.环形链表 II 代码及指针相遇证明问题

    ⭐️ 环形链表 I 题目描述 给你一个链表的头节点 head ,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 如果链表中存在环 ,则返回 tru ...

  5. leetcode - 141. 环形链表(哈希表)

    给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. 示例 1: 输入: ...

  6. 32. Leetcode 141. 环形链表 (链表-双指针-环形链表)

    给你一个链表的头节点 head ,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表 ...

  7. Leetcode 141.环形链表 (每日一题 20210617)

    给定一个链表,判断链表中是否有环.如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 ...

  8. [leetcode] 141.环形链表

    给定一个链表,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引 ...

  9. Leetcode 141. 环形链表 解题思路及C++实现

    解题思路: 定义快慢两个指针,当指针所指节点是同一个时,说明出现了环. /*** Definition for singly-linked list.* struct ListNode {* int ...

最新文章

  1. RAC修改数据库的spfile位置
  2. BZOJ 4817: [Sdoi2017]树点涂色
  3. ubuntu上面svn用merge合并到之前的版本
  4. 华为这个事,是不是刷KPI?
  5. Android View事件机制 21问21答
  6. 蓝桥杯2016年第七届C++省赛B组第二题-生日蜡烛
  7. Canvas 仿百度贴吧客户端 loading 小球
  8. 路由器修改html,徒手修改大麦路由器dw33d,变luci中文界面,并开启ssh
  9. eclipse安装反编译软件jd-gui
  10. 体育会项目查询程序C语言,中考资讯:各地区2021年中考体育会取消吗
  11. 计算机一级常用计算公式,软考网络工程师常用计算公式汇总1
  12. android多点触控,图片的拖拽与放大缩小
  13. 我也就是尝试了一下斗图的快乐
  14. Mac 硬件驱动(.kext)安装方法
  15. C++代码静态分析与优化(7)_vera++
  16. xiaopiu原型设计 记录
  17. 多元伯努利分布 multivariate bernoulli distribution
  18. IDEA创建maven项目没有src文件夹怎么办
  19. 转:sourceingsight 破解版下载安装
  20. Spring自动注入

热门文章

  1. perl 分析mysql binlog
  2. aspx后缀映射成html
  3. Linux美化——终端提示符
  4. 8.2 Android Basic 数据存储 Database SQLite Demo 2
  5. 尾递归调用 高阶函数 map filter reduce
  6. 开发中使用UEditor编辑器的注意事项
  7. 得到目标元素距离视口的距离以及元素自身的宽度与高度(用于浮层位置的动态改变)...
  8. 从阿里孵化钉钉谈起,大公司内部创业到底有多难?
  9. [ubuntu]dlna平台搭建(在家里,寝室搭建自己的影音平台)
  10. IoC(Inversion of Control,控制反转)模式