牛客热题:判断链表是否有环

📟作者主页:慢热的陕西人

🌴专栏链接:力扣刷题日记

📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言

在这里插入图片描述

牛客热题:判断链表是否有环

题目链接

判断链表中是否有环_牛客题霸_牛客网 (nowcoder.com)

方法一:快慢指针

思路

  • 设两个指针一个快指针,一个慢指针。
  • 当快指针和慢指针相遇的时候(也就是说快指针从后面又重新超越了慢指针),那么我们则认为链表内部是有环的

代码

    bool hasCycle(ListNode *head) 
    {
        ListNode* l = head;
        ListNode* r = head;

        while(r && r->next)
        {
            l = l->next;
            r = r->next->next;
            if(l == r) return true;
        }
        
        return false;
    }

复杂度

时间复杂度:O(N),其中N为链表的长度,原因是当第一次相遇的时候慢指针的移动距离不会超过链表的长度

空间复杂度:O(1),只建立了两个指针。

方法二:哈希表

思路

  • 将我们遍历过的节点的指针插入到哈希表

代码

    bool hasCycle(ListNode *head) 
    {
        unordered_set<ListNode*> hash;

        while(head != nullptr)
        {
            if(hash.count(head)) return true;
            else hash.insert(head);
            head = head->next;
        }
        return false;
    }

复杂度

时间复杂度:O(N),其中N为链表的长度,遍历最多为链表的长度就可以判定是否有环。

空间复杂度:O(N),最多使用链表长度的空间。

相关推荐

  1. 单向环形的创建与判断是否

    2024-05-01 01:16:04       6 阅读
  2. leetcode 141 判断是否存在

    2024-05-01 01:16:04       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-01 01:16:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-01 01:16:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-01 01:16:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-01 01:16:04       18 阅读

热门阅读

  1. 强制删除k8s中的pod

    2024-05-01 01:16:04       12 阅读
  2. python使用meshio加vtk读取数据并渲染

    2024-05-01 01:16:04       12 阅读
  3. php 使用链接接收两个参数

    2024-05-01 01:16:04       6 阅读
  4. Zephyr PM电源管理系统学习笔记

    2024-05-01 01:16:04       13 阅读
  5. GpuMall的GPU算力资源池化技术有何优势?

    2024-05-01 01:16:04       14 阅读
  6. 2012NOIP普及组真题 2. 寻宝

    2024-05-01 01:16:04       12 阅读
  7. 安卓平台的在线视频下载神器—Seal

    2024-05-01 01:16:04       24 阅读
  8. 处理推送被拒绝的问题

    2024-05-01 01:16:04       9 阅读
  9. Vue中使用watch监听Vuex中的数据变化

    2024-05-01 01:16:04       10 阅读
  10. 等保测评-锐捷设备核查命令

    2024-05-01 01:16:04       31 阅读