题目
解析
- 定义两个指针,一个遍历快,一个遍历慢(快慢指针)。
- 如果链表有环的话,两个指针会相见。
- 注意要判断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;
}
}