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

141.Linked List Cycle 快慢指针

时间:2018-05-17 11:48:12      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:ret   循环链表   相等   class   问题   快慢指针   循环   地址   min   

问题描述:

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

 

我的思路:

用一个指针指向链表头部,另一个指针在链表上移动。若两个指针指向地址相等,则存在环。

然后我没过OJ:)

因为循环链表的尾部并不一定链接头部,可能链接任意节点,此时会陷入死循环。

所以应用快慢指针。

两个指针的步长不同,若存在环,必然会相遇。

 

代码实现(c++):

class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode *p1 = head, *p2 = head;
        while (p2 && p2->next) {
            p1 = p1->next;
            p2 = p2->next->next;
            if (p1 == p2) return true;
        }
        return false;
    }
};

 

141.Linked List Cycle 快慢指针

标签:ret   循环链表   相等   class   问题   快慢指针   循环   地址   min   

原文地址:https://www.cnblogs.com/yaoyudadudu/p/9049050.html

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