/**
 * 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)
        {
            //if (head == null)
            //{
            //    return false;
            //}
            //else
            //{
            //    var temp = head;
            //    while (head.next != null)
            //    {
            //        var cur = head.next;
            //        if (temp == cur)
            //        {
            //            return true;
            //        }
            //        else
            //        {
            //            head = head.next;
            //        }
            //    }
            //    return false;
            //}

            if (head == null) return false;
            ListNode walker = head;
            ListNode runner = head;
            while (runner.next != null && runner.next.next != null)
            {
                walker = walker.next;
                runner = runner.next.next;
                if (walker == runner) return true;
            }
            return false;
        }
    }

https://leetcode.com/problems/linked-list-cycle/#/description

 

补充一个python的版本:

 1 class Solution:
 2     def hasCycle(self, head: ListNode) -> bool:
 3         if head == None:
 4             return False
 5         slow,fast = head,head
 6         while fast != None and fast.next != None:
 7             slow = slow.next
 8             fast = fast.next.next
 9             if slow == fast:
10                 return True
11         return False

 

posted on 2017-04-22 10:11  Sempron2800+  阅读(138)  评论(0编辑  收藏  举报