【LeetCode笔记】141. 环形链表(Java、快慢指针、链表)
文章目录
- 题目描述
- 思路 & 代码
题目描述
- 常见题,用上了久违的快慢指针
思路 & 代码
- 举个例子就能明白了:
- 我和汽车,进行一场比赛,跑道可能是环形跑道,也可能是直道。
- 直道的话,将会以汽车撞到终点为结束( 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、快慢指针、链表)相关推荐
- LeetCode 234. 回文链表(快慢指针+链表反转)
1. 题目 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false示例 2: 输入: 1->2->2->1 输出: true进阶: 你能否用 O(n) ...
- leetcode 234. 回文链表(快慢指针+链表倒置)
请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 代码 /*** Definitio ...
- 程序员面试金典 - 面试题 02.06. 回文链表(快慢指针+链表反转)
1. 题目 编写一个函数,检查输入的链表是否是回文的. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你 ...
- 环形链表的快慢指针相遇问题证明
环形链表的快慢指针相遇问题证明 证明1:慢指针一定在环形链表一圈内遇上 首先假设慢指针的每次只走1步,快指针每次走2步,当慢指针走了k次后,慢指针共走了k步,而快指针走了2k步. 假如说,快指针和慢指 ...
- 试编写一个将双向循环链表逆置的算法_图解:链表的快慢指针,解决 80% 的链表面试题!...
一.前言 链表是基本的数据结构之一,它与数组不同,数组在内存中存储,需要一块连续的内容空间来存储,对内存的要求比较高.例如我们需要 100MB 大小的数组,内存中就必须有一段连续的 100MB 的内存 ...
- 数据结构链表之单链表的快慢指针——3
单链表之快慢指针 单链表的快慢指针简介 快慢指针指链表中定义两个指针,两个指针的移动速度一快一慢,一般快指针移动步长为慢指针的两倍 快慢指针适合解决的几个典型问题 中间值问题 单向链表是否有环问题 有 ...
- 【LeetCode】【HOT】141. 环形链表(快慢指针)
[LeetCode][HOT]141. 环形链表 文章目录 [LeetCode][HOT]141. 环形链表 package hot;class ListNode{int val;ListNode n ...
- leetcode 141. 环形链表(快慢指针解法)
题目 思路 绝对的经典题目,快慢指针,慢指针一次走两步,快指针一次走一步,直到两指针相遇,则说明有环. 关于评论区看到的一种思路,本质是做标记.这个办法不是很好,一方面,如果测试用例足够全的话,标记内 ...
- LeetCode 143. 重排链表(链表反转+快慢指针)
1. 题目 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. ...
- 环形链表的快慢指针相遇问题以及相遇位置的证明
假设有这么一个环形链表 第一步 设慢指针走到环的入口处走了K个结点,则快指针走了2K个结点 则有 2 K − K = α + n C 2K-K=α + nC 2K−K=α+nC 其中,α是快指针距离环 ...
最新文章
- 通过Python的__slots__节省9GB内存
- 算法------零钱兑换(Java版本)
- java-1.11.0的环境配置,JAVA 环境配置
- Android Jetpack Navigation 深入体验报告
- SQL基础操作_5_字符串处理
- Spring 源码讲解:bean 的创建流程 - 公开课笔记
- python题库选择填空_python练习题4.18猴子选大王
- 2011年计算机一级考试题,2011年计算机一级考试试题及答案
- android开发方法数,Android减少App方法数
- 0626 Django模型(ORM)
- python 生成器装饰器_七.python迭代器生成器装饰器
- 深入理解@Lazy注解
- Java实现万年历【升级版】
- java 同步线程方式
- thinkpad sl400 换网卡,debian换驱动
- WPF调色盘(1):绘制三色轮
- 一分钟教你解决——浏览器代理服务器被篡改
- Windows优化大师域名解析问题
- 阿里软件测试工程师手把手教学——APP蓝牙连接测试
- Gabor滤波器 pytorch实现
热门文章
- linux交叉编译aix_mips-linux-gcc交叉编译工具链搭建小结【转】
- moment 时间戳_【通知】2020 CATTI 考试准考证打印时间
- 软件需求分析文档模板_小议管理软件需求分析
- 检查用户名是否存在的servlet代码怎么写_Servlet详解!!!
- Halcon算子学习:smooth_object_model_3d
- RNN知识+LSTM知识+encoder-decoder+ctc+基于pytorch的crnn网络结构
- Python 中 PyQt5 + pycharm 调用 Qt Designer,将.ui文件转换成 .py 文件
- Linux下查看系统版本号信息的方法
- android sdk 目录说明,Android的sdk、api及工程目录说明
- [前台]---图片上传和校验