一、题目描述
二、思路
定义快慢指针,一个走一步,一个走两步,遍历链表,当两指针相遇,说明链表成环。
三、代码实现
/**
* 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) {
//定义快慢指针
ListNode slow = head;
ListNode fast = head;
while(fast != null && fast.next != null){
//慢指针每次走一步
slow = slow.next;
//快指针每次走两步
fast = fast.next.next;
//当两指针相遇,说明链表成环
if(fast == slow){
return true;
}
}
//没相遇,不构成环形,返回false
return false;
}
}