题目

解析

- 定义两个指针,一个遍历快,一个遍历慢(快慢指针)。
- 如果链表有环的话,两个指针会相见。
- 注意要判断fast.next!=null否则如果不是闭环会产生
fast=null.next会报错,空指针异常。
/**
* 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 fast=head;
ListNode low=head;
while(fast!=null&&low!=null&&fast.next!=null){
fast=fast.next.next;
low=low.next;
if(low==fast){
return true;
}
}
return false;
}
}
本文介绍了一种使用快慢指针检测链表中是否存在环的高效算法。通过定义两个指针,一个快指针每次移动两步,一个慢指针每次移动一步,如果链表存在环,两个指针最终会在环内相遇。
320

被折叠的 条评论
为什么被折叠?



