您的位置:首页 > 其它

leetcode刷题,总结,记录, 备忘 141

2015-06-07 22:37 435 查看
leetcode141题。

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) {
       if (!head)
       return false;
       
       ListNode * fast, * slow;
       fast = slow = head;
       while (fast && fast->next)
       {
           slow = slow->next;
           fast = fast->next->next;
           if (slow == fast)
           return true;
       }
       return false;
    }
};


题目有点读不懂意思,还特意去百度了一下,才看懂。使用2个指针,一个一次移动一步,一个一次移动两步,如果链表中存在环,则2个指针会出现相等的情况。循环条件的第二个条件是为了防止fast->next是null的情况下再->next。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: