Leecode 141.环形链表(Java 快慢指针)


1 官方代码:
2 public class Solution {
3 public boolean hasCycle(ListNode head) {
4 if (head == null || head.next == null) {
5 return false;
6 }
7 ListNode slow = head;
8 ListNode fast = head.next;
9 while (slow != fast) {
10 if (fast == null || fast.next == null) {
11 return false;
12 }
13 slow = slow.next;
14 fast = fast.next.next;
15 }
16 return true;
17 }
18 }
19
20
21 作者:LeetCode-Solution
22 链接:https://leetcode-cn.com/problems/linked-list-cycle/solution/huan-xing-lian-biao-by-leetcode-solution/
23 来源:力扣(LeetCode)
24 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
自己写的:
1 /**
2 * Definition for singly-linked list.
3 * class ListNode {
4 * int val;
5 * ListNode next;
6 * ListNode(int x) {
7 * val = x;
8 * next = null;
9 * }
10 * }
11 */
12 public class Solution {
13 public boolean hasCycle(ListNode head) {
14 if((head != null)&&(head.next != null)){//空链表或单个节点直接返回false,不可能有环
15 ListNode p = new ListNode();
16 ListNode q = new ListNode();
17 p = head;q = head;//两个指针pq都在head头指针开始(初始化)
18 while((p != null)&&(q != null)){
19 //当两个都不为空时继续,若其中一个为空还没遇到那也是不存在环
20 //快指针每次走两步,慢指针每次走一步
21 p = p.next;
22 if(q.next == null){return false;}//防止下一步报错
23 q = q.next.next;
24 if(p == q){//如果存在环,那么两指针一定会相遇,如果不存在环,快指针一定一直在慢指针前面
25 return true;
26 }
27 }
28 }
29 return false;
30 }
31 }
Leecode 141.环形链表(Java 快慢指针)的更多相关文章
- [LeetCode题解]142. 环形链表 II | 快慢指针
解题思路 本题是在141. 环形链表基础上的拓展,如果存在环,要找出环的入口. 如何判断是否存在环,我们知道通过快慢指针,如果相遇就表示有环.那么如何找到入口呢? 如下图所示的链表: 当 fast 与 ...
- Java实现 LeetCode 141 环形链表
141. 环形链表 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. ...
- 【LeetCode】141.环形链表
题目描述 141.环形链表 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中 ...
- LeetCode 141. 环形链表(Linked List Cycle) 19
141. 环形链表 141. Linked List Cycle 题目描述 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 ...
- sort-list——链表、快慢指针找中间、归并排序
Sort a linked list in O(n log n) time using constant space complexity. 链表,快慢指针找中点,归并排序. 注意判断条件fast-& ...
- [LeetCode题解]141. 环形链表 | 快慢指针
题目描述 给定一个链表,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的 ...
- LeetCode 141 ——环形链表(JAVA)
给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. 示例 1: 输入: ...
- c 链表之 快慢指针 查找循环节点
参考:http://blog.csdn.net/wenqian1991/article/details/17452715 上面分析了 根据这张图 推倒出 数学公式. 刚接触 不能一下弄明白.下面结合上 ...
- LeetCode 141——环形链表
1. 题目 2. 解答 2.1 方法 1 定义快慢两个指针,慢指针每次前进一步,快指针每次前进两步,若链表有环,则快慢指针一定会相遇. /** * Definition for singly-link ...
- reorder-list——链表、快慢指针、逆转链表、链表合并
Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do thi ...
随机推荐
- HTML学习笔记5----属性
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
- JavaScript严格模式(use strict)
一.什么是严格模式(strict mode) JavaScript严格模式即在严格模式下运行.严格模式下,你将不能使用未声明的变量. 注意,严格模式需要浏览器的支持:Internet explorer ...
- 大规模人脸分类—allgather操作(2)
腾讯开源人脸识别训练代码TFace 中关于all_gather层的实现如下.接下来解释为什么backward要进行reduce相加操作. https://github.com/Tencent/TFac ...
- Safari高级使用
Safari是苹果公司为旗下设备开发的一款强大的浏览器不论是iPhone还是iPad亦或是MAC OS上都能使用.但是针对不同的系统,Safari也有一定的改动.那么在MacOS中如何使用Safari ...
- pg_freespacemap查看表膨胀
pg_freespacemap模块提供一种检查自由空间映射(FSM)的手段.它提供一个名为pg_freespace的函数,或精确的说是两个重载函数.该函数在一个给定的页面或关系中的所有页面的自由空间映 ...
- Appium自动化测试之键盘操作pressKeyCode()方法(Android特有)
电话键 KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOME 按键Home 3 KEYCODE_MENU 菜单键 82 KEYCODE_BACK ...
- Java-【大数处理】和【日期类】
[大数类] BigInteger(整数) 和 BigDecimal(小数) 都是Java针对大数提供的类 常用方法: (1)加:add (2)减:subtract (3)乘:multiply (4)除 ...
- spring-security-oauth2-authorization-server
旧依赖的移除 长久以来,使用Spring Security整合oauth2,都是使用Spring Security Oauth2这个系列的包: <dependency> <group ...
- 向excel中写数据的python代码
①首先需要安装xlwt插件 安装语句:pip install xlwt ②python代码 1 import xlwt 2 ''' 3 调用xlwt模块中的Workbook方法来创建一个excel表格 ...
- Java基础|03.基础语法(2)
Java安全|03.Java基础语法(2) 00x1 单例模式 定义: 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一 ...