标题 | 141. 环形链表 |
难度 | 简单 |
天数 | 第7天,第1/3题 |
数据结构 | 链表 |
示例 1:
示例 2:
示例 3:
提示:
- 链表中节点的数目范围是
[0, 104]
-105 <= Node.val <= 105
pos
为-1
或者链表中的一个 有效索引 。
思路:
- 这里使用快慢指针来找出环形链表节点
- 快指针移动两个节点,慢指针移动一个节点,如果快慢指针相遇,那相遇点就是环型链表连接点
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
//数据结构 第 7 天 1/3 链表
public boolean hasCycle(ListNode head) {
//快指针
ListNode quick = head;
//慢指针
ListNode slow = head;
while(quick != null && quick.next != null){
//快指针走两个节点
quick = quick.next.next;
//慢指针走一个节点
slow = slow.next;
//快慢指针相同,代表存在环
if(quick == slow){
return true;
}
}
return false;
}
}