题解 | #判断链表中是否有环#

判断链表中是否有环

http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9

解答:利用循环链表的特点,分别用两个指针p1和p2,p1地址以单倍速递增,p2以二倍速递增,如果链表存在环,则p1和p2总有一时刻相遇,当p1==p2时,证明有环,否则无环

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

    }
};
全部评论

相关推荐

mq2:我倒是觉得这种敞亮一点好。能接受就去不能就不去呗。 完了跟现在“正常”公司一样,hr说的天花乱坠,进去一看根本就是996核动力牛马,想走又没应届生身份了。岂不是更糟。
点赞 评论 收藏
分享
03-27 17:35
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务