141. Linked List Cycle 環形連結串列
阿新 • • 發佈:2018-11-07
題目
程式碼部分一(1ms 77.01%)
public class Solution { public boolean hasCycle(ListNode head) { if(head == null) return false; ListNode s = head; ListNode f = head.next; while(f != null){ if(f == s){ return true; } if(f.next == null) return false; f = f.next.next; s = s.next; } return false; } }
程式碼部分二(16ms 4.12%)
public class Solution { public boolean hasCycle(ListNode head) { Set<ListNode> set = new HashSet<>(); while(head != null){ if(set.contains(head)) return true; else set.add(head); head = head.next; } return false; } }
程式碼部分三(1ms 77.81%)
public class Solution { public boolean hasCycle(ListNode head) { if(head == null || head.next == null) return false; ListNode slow = head; ListNode fast = head.next; while(fast != null && fast.next != null){ if(fast == slow) return true; slow = slow.next; fast = fast.next.next; } return false; } }
程式碼部分四(0ms 99.99%)
public class Solution {
public boolean hasCycle(ListNode head) {
if(head == null || head.next == null) return false;
ListNode slow = head;
ListNode fast = head.next;
int len = 1;
while(slow != fast){
if(fast == null || fast.next == null) return false;
slow = slow.next;
fast = fast.next.next;
len++;
}
return true;
}
}