码迷,mamicode.com
首页 > 其他好文 > 详细

leetCode 141. Linked List Cycle 链表

时间:2016-08-13 06:37:45      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:链表

141. Linked List Cycle


Given a linked list, determine if it has a cycle in it.

Follow up:
Can you solve it without using extra space?

题目大意:

判断一个单链表是否存在环。

思路:

采用快慢指针来处理。

代码如下:


/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode *slow,*fast;
        if(NULL == head || NULL == head->next)
            return false;
        slow = head;
        fast = head;
        fast = fast->next->next;
        slow = slow->next;
        while(1)
        {
            if(fast == NULL || fast->next == NULL)
                return false;
            if(fast == slow || fast->next == slow)
                return true;
            slow = slow->next;
            fast = fast->next->next;
        }
        return false;
        
    }
};


总结:快慢指针

快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快慢。例如可以让快指针每次沿链表向前移动2,慢指针每次向前移动1次。

快慢指针可以用来求一个单链表是否存在环,还可以用来求一个单链表的中间位置。


2016-08-13 00:34:46

本文出自 “做最好的自己” 博客,请务必保留此出处http://qiaopeng688.blog.51cto.com/3572484/1837479

leetCode 141. Linked List Cycle 链表

标签:链表

原文地址:http://qiaopeng688.blog.51cto.com/3572484/1837479

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!