1. 程式人生 > >141-環形鏈表

141-環形鏈表

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-環形鏈表