141-環形鏈表
阿新 • • 發佈:2019-05-14
pub hashset urn hash color 鏈表 輸出 class turn
給定一個鏈表,判斷鏈表中是否有環。 為了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鏈表中沒有環。 示例 1: 輸入:head = [3,2,0,-4], pos = 1 輸出:true 解釋:鏈表中有一個環,其尾部連接到第二個節點。 示例 2: 輸入:head = [1,2], pos = 0 輸出:true 解釋:鏈表中有一個環,其尾部連接到第一個節點。 示例 3: 輸入:head = [1], pos = -1 輸出:false 解釋:鏈表中沒有環。 進階: 你能用 O(1)(即,常量)內存解決此問題嗎? 解法1:哈希 public boolean hasCycle(ListNode head) { Set<ListNode> set=new HashSet<>(); ListNode a=head; while (a!=null){ set.add(a); a=a.next; if (set.contains(a)){ return true; } }return false; } 解法2:快慢指針 public boolean hasCycle(ListNode head) { if (head==null||head.next==null){ return false; } ListNode fast=head; ListNode slow=head; while (fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next; if (fast==slow) return true; } return false; }
141-環形鏈表