leetcode
双指针
注: 按照模块刷题,使用的刷题目录是
刷题目录
6. 环形链表
题目描述:
环形链表
解题思路: 设置一快一慢两个指针,慢指针每次移动一步,快指针每次移动两步,开始时,慢指针在位置 head,而快指针在位置 head.next。这样一来,如果在移动的过程中,快指针反过来追上慢指针,就说明该链表为环形链表。否则快指针将到达链表尾部,该链表不为环形链表。
代码:
public class Solution {
public boolean hasCycle(ListNode head) {
if(head==null){
return false;
}
ListNode slow=head;
ListNode fast=head.next;
while(slow!=fast){
if(fast==null||fast.next==null){
return false;
}
slow=slow.next;
fast=fast.next.next;
}
return true;
}
}