题目就是判断是否有环,虽然不难但还是动手写一下吧。
如果不要求额外空间的话,可以直接用set集合存储节点,判断是否有有重复,这样遍历一遍需要额外空间O(n);所以用快慢指针,快的总能套圈慢的,就是圈数多少的问题,注意边界条件!!
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode slow = head;
ListNode quick = head;
// 注意边界条件,quick.next不能为空
while(slow != null && quick!= null && quick.next != null){
slow = slow.next;
quick = quick.next.next;
if(slow == quick)
return true;
}
return false;
}
}