判断链表中是否有环(快慢指针)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-29 20:09   11   0

题目:判断给定链表中是否有环

解题思路:

1、哈希表标记走过的节点(不符合空间复杂度要求)

2、快慢指针:一个指针走一步,一个指针走两步,如果有环,终会相遇。

代码:

bool hasCycle(struct ListNode* head ) {
    // write code here
    struct ListNode *p = head;
    while((p !=NULL)&&(p->next!=NULL))
    {
        p=p->next->next;
        head=head->next;
        if(p==head)
            return 1;
    }
    return 0;
}

华点:

p->next->next 是因为p->next!=NULL,而head的NEXT可能==NULL

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP