141 https://leetcode.com/problems/linked-list-cycle/
Given a linked list, determine if it has a cycle in it.
142 https://leetcode.com/problems/linked-list-cycle-ii/
Given a linked list, return the node where the cycle begins. If there is no cycle, return null
.
141
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution
{
public bool HasCycle(ListNode head)
{
ListNode slow = head, fast = head;
while (fast!=null&& fast.next != null)
{
slow = slow.next;
fast = fast.next.next;
if (slow == fast)
return true;
}
return false;
}
}
142
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution
{
public ListNode DetectCycle(ListNode head)
{
ListNode slow=head,fast=head;
while(true)
{
if(fast==null||fast.next==null)
return null;
slow=slow.next;
fast=fast.next.next;
if(slow==fast)
break;
}
slow=head;
while(slow!=fast)
{
slow=slow.next;
fast=fast.next;
}
return slow;
}
}
《程序员面试金典》P126
https://siddontang.gitbooks.io/leetcode-solution/content/linked_list/linked_list_cycle.html