文章目录

  • 题目描述
  • 思路 & 代码

题目描述

  • 常见题,用上了久违的快慢指针

思路 & 代码

  • 举个例子就能明白了:
  • 我和汽车,进行一场比赛,跑道可能是环形跑道,也可能是直道。
  • 直道的话,将会以汽车撞到终点为结束( fast == null),也就是非环
  • 弯道的话,汽车总会在某个时刻,与我擦肩而过,代表领先我整整一圈,此时,我就能确定这肯定是一个环形跑道。
  • “我” 就是 slow,“汽车” 就是 fast
/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public boolean hasCycle(ListNode head) {if(head == null){return false;}// 使用快慢指针ListNode slow = head, fast = head;while(fast.next != null && fast.next.next != null){// fast一趟两次,slow一趟一次if(fast.next == slow || fast.next.next == slow){return true;}slow = slow.next;fast = fast.next.next;}return false;}
}
  • 无注释 + 优化版
public class Solution {public boolean hasCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while(fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if(slow == fast) {return true;}}return false;}
}

【LeetCode笔记】141. 环形链表(Java、快慢指针、链表)相关推荐

  1. LeetCode 234. 回文链表(快慢指针+链表反转)

    1. 题目 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false示例 2: 输入: 1->2->2->1 输出: true进阶: 你能否用 O(n) ...

  2. leetcode 234. 回文链表(快慢指针+链表倒置)

    请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 代码 /*** Definitio ...

  3. 程序员面试金典 - 面试题 02.06. 回文链表(快慢指针+链表反转)

    1. 题目 编写一个函数,检查输入的链表是否是回文的. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你 ...

  4. 环形链表的快慢指针相遇问题证明

    环形链表的快慢指针相遇问题证明 证明1:慢指针一定在环形链表一圈内遇上 首先假设慢指针的每次只走1步,快指针每次走2步,当慢指针走了k次后,慢指针共走了k步,而快指针走了2k步. 假如说,快指针和慢指 ...

  5. 试编写一个将双向循环链表逆置的算法_图解:链表的快慢指针,解决 80% 的链表面试题!...

    一.前言 链表是基本的数据结构之一,它与数组不同,数组在内存中存储,需要一块连续的内容空间来存储,对内存的要求比较高.例如我们需要 100MB 大小的数组,内存中就必须有一段连续的 100MB 的内存 ...

  6. 数据结构链表之单链表的快慢指针——3

    单链表之快慢指针 单链表的快慢指针简介 快慢指针指链表中定义两个指针,两个指针的移动速度一快一慢,一般快指针移动步长为慢指针的两倍 快慢指针适合解决的几个典型问题 中间值问题 单向链表是否有环问题 有 ...

  7. 【LeetCode】【HOT】141. 环形链表(快慢指针)

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

  8. leetcode 141. 环形链表(快慢指针解法)

    题目 思路 绝对的经典题目,快慢指针,慢指针一次走两步,快指针一次走一步,直到两指针相遇,则说明有环. 关于评论区看到的一种思路,本质是做标记.这个办法不是很好,一方面,如果测试用例足够全的话,标记内 ...

  9. LeetCode 143. 重排链表(链表反转+快慢指针)

    1. 题目 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. ...

  10. 环形链表的快慢指针相遇问题以及相遇位置的证明

    假设有这么一个环形链表 第一步 设慢指针走到环的入口处走了K个结点,则快指针走了2K个结点 则有 2 K − K = α + n C 2K-K=α + nC 2K−K=α+nC 其中,α是快指针距离环 ...

最新文章

  1. 通过Python的__slots__节省9GB内存
  2. 算法------零钱兑换(Java版本)
  3. java-1.11.0的环境配置,JAVA 环境配置
  4. Android Jetpack Navigation 深入体验报告
  5. SQL基础操作_5_字符串处理
  6. Spring 源码讲解:bean 的创建流程 - 公开课笔记
  7. python题库选择填空_python练习题4.18猴子选大王
  8. 2011年计算机一级考试题,2011年计算机一级考试试题及答案
  9. android开发方法数,Android减少App方法数
  10. 0626 Django模型(ORM)
  11. python 生成器装饰器_七.python迭代器生成器装饰器
  12. 深入理解@Lazy注解
  13. Java实现万年历【升级版】
  14. java 同步线程方式
  15. thinkpad sl400 换网卡,debian换驱动
  16. WPF调色盘(1):绘制三色轮
  17. 一分钟教你解决——浏览器代理服务器被篡改
  18. Windows优化大师域名解析问题
  19. 阿里软件测试工程师手把手教学——APP蓝牙连接测试
  20. Gabor滤波器 pytorch实现

热门文章

  1. linux交叉编译aix_mips-linux-gcc交叉编译工具链搭建小结【转】
  2. moment 时间戳_【通知】2020 CATTI 考试准考证打印时间
  3. 软件需求分析文档模板_小议管理软件需求分析
  4. 检查用户名是否存在的servlet代码怎么写_Servlet详解!!!
  5. Halcon算子学习:smooth_object_model_3d
  6. RNN知识+LSTM知识+encoder-decoder+ctc+基于pytorch的crnn网络结构
  7. Python 中 PyQt5 + pycharm 调用 Qt Designer,将.ui文件转换成 .py 文件
  8. Linux下查看系统版本号信息的方法
  9. android sdk 目录说明,Android的sdk、api及工程目录说明
  10. [前台]---图片上传和校验