leetcode–linked_list_cycle
题意: 判断一个链表是否有环
条件: 不能创建额外空间
分析: 如果只用一个指针,无法判断什么时候终止,一定不能求解此题。不过本题其实不是很难,需要用到一个小技巧,设置两个快慢指针,快指针一次走两步,慢指针一次走一步,当快指针遇到NULL时,返回false(无环);而如果链表有环,则快指针最后一定会和慢指针相遇,相遇之后返回true即可。
代码
public boolean hasCycle(ListNode head) {
if(head == null){
return false;
}
ListNode slow = head;
ListNode fast = head;
while(fast != null && fast.next!= null){
fast = fast.next.next;
slow = slow.next;
if(fast == slow){
return true;
}
}
return false;
}