题目链接:
https://leetcode-cn.com/problems/linked-list-cycle/
题目描述:
给定一个链表,判断链表中是否有环。
基本思路:
采用快慢指针的方法进行判断,设置快指针一次走两步,慢指针一次走一步,如果链表有环就必有两个指针指向同一节点的情况,例如在环形跑道上两个不同速度的跑步者在某一时间相遇。如果两个指针没有出现指向同一节点的情况则此链表无环。
代码实现:
/*
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
*/
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode fast = head;
ListNode slow = head;
while (fast != null && fast.next != null) {//判断fast.next是否为空,为空直接返回错误
slow = slow.next;
fast = fast.next.next;
if (slow == fast) {
// 判定两个节点是否是相同节点
return true;
}
}
return false;
}
}