判断链表是否有环(NC4/考察次数Top15/难度简单)

Posted 码农指南

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断链表是否有环(NC4/考察次数Top15/难度简单)相关的知识,希望对你有一定的参考价值。

描述:
判断给定的链表中是否有环。如果有环则返回true,否则返回false。
(题目来自牛客网)

用C++实现如下

/**
 * struct ListNode {                            //定义单链表结构,包含val和ListNode *
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
    //思路,传入的是链表的头结点,返回的是bool型变量
    //思路:一快一慢两个指针,如果快指针等于空(由于快指针每次走两步,所以需要判断快指针和快指针的
    //下一个节点是否为空,确保p->next->next有意义),则表示没有环,否则就一直跑,两个肯定会相遇  
        if(head==nullptr || head->next==nullptr)
        {
            return false;
        }
        ListNode* p = head;
        ListNode* q = head;
        while(p!=NULL && p->next!=NULL){         //需要判断快指针和快指针的下一个节点是否为空,确保p->next->next有意义
            p = p->next->next;                      
            q = q->next;
            if(p==q){                            //相遇了
                return true;
            }
        }
        return false;                            //遇到空,则返回false;
    }
};

纯手撕代码,如果觉得内容不错麻烦点个赞,后面陆续配上Top100算法题通俗易懂的讲解视频,可以花两个月时间完全掌握,进大厂不是梦,转行狗亲测!

以上是关于判断链表是否有环(NC4/考察次数Top15/难度简单)的主要内容,如果未能解决你的问题,请参考以下文章

[NowCoder]NC4 判断链表中是否有环

牛客题霸 NC4 判断链表中是否有环

NC4 链表是否有环

判断二叉树是否对称(NC16/考察次数Top61/难度简单)

判断二叉树是否对称(NC16/考察次数Top61/难度简单)

判断回文(NC141/考察次数Top43/难度入门)