[leetcode/lintcode 題解] Amazon 面試題:帶環鏈表

給定一個鏈表,判斷它是否有環。
 
在線評測地址:領釦題庫官網
 
 
樣例 1:
        輸入: 21->10->4->5,  then tail connects to node index 1(value 10).
        輸出: true
樣例 2:
        輸入: 21->10->4->5->null
        輸出: false
 
題解
快慢指針的經典題。 快指針每次走兩步,慢指針一次走一步。 在慢指針進入環以後,快慢指針之間的距離每次縮小1,因此最終能相遇。
 
public class Solution {
    public Boolean hasCycle(ListNode head) {
        if (head == null || head.next == null) {
            return false;
        }
 
        ListNode fast, slow;
        fast = head.next;
        slow = head;
        while (fast != slow) {
            if(fast==null || fast.next==null)
                return false;
            fast = fast.next.next;
            slow = slow.next;
        } 
        return true;
    }
}
 
更多題解參考:九章官網solution
相關文章
相關標籤/搜索