Leetcode Linked List Cycle

来源:互联网 发布:网络词木马是什么意思 编辑:程序博客网 时间:2024/06/05 22:39

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

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


解题思路:分别设置两个指针one和two,遍历的时候,one=one->next,two=two->next->next,这样以不同速率进行遍历,如果该列表存在环的话,one和two必然在某个时刻相等,反之,则可以正常遍历完列表,不会出现两个指针相等的情况。


代码如下:

/** * 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* cur1=head,*cur2=head;        while(cur1->next && cur2->next && cur2->next->next)        {            cur1 = cur1->next;            cur2 = cur2->next->next;            if(cur1 == cur2)                return true;                   }        return false;    }};


原创粉丝点击