1. 程式人生 > >141.判斷是否有環形列表 LeetCode java實現 演算法之旅

141.判斷是否有環形列表 LeetCode java實現 演算法之旅

141.判斷是否有環形列表

方法1:破解法:執行一分鐘,判斷是否最後為空

方法2:存節點。用set集合來儲存節點,判斷是否有重複(時間複雜度:O(n))

方法3:快慢指標:定義兩個指標,slow,fast,slow+1,fast+2。如果有環,fast和slow會相遇,即相等。

方法3程式碼:

public class Solution {

    public boolean hasCycle(ListNode head) {

        ListNode fast = head;

        ListNode slow = head;

        while(slow != null && fast != null && fast.next != null){//fast.next的判斷:判斷接下來是否還有資料

            slow = slow.next;

            fast = fast.next.next;

            if(slow==fast)

                return true;

        }

        return false;

    }

}