当前位置: 首页 > news >正文

LeetCode[142] 环形链表 II

哈希表匹配法

  1. set存储遍历过的节点
  2. 每次遍历查询set中是否有该节点
    • 有,则代表该节点为环的起点
    • 无,则插入set中,继续遍历链表
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        unordered_set<ListNode*> myset; // 存储遍历过的节点
        while(head) // head为空时代表链表内没有环
        {
            if(myset.find(head)!=myset.end()) // 如果节点已经被遍历过,则为环的起点
                return head;
            myset.insert(head);
            head = head->next;
        }
        return nullptr;
    }
};

快慢指针

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        ListNode* slow = head; // 慢指针
        ListNode* fast = head; // 快指针
        while(fast != nullptr) // 快指针为空,则代表不存在环,到链表尾部了
        {
            slow = slow->next; // 满指针前进一步
            if(fast->next == nullptr)
                return nullptr;
            fast = fast->next->next;// 快指针前进两步
            // 如果快慢指针相遇,存在环,寻找环的开始节点
            if(slow == fast)
            {
                ListNode* ptr = head;
                while(ptr!=slow)
                {
                    ptr = ptr->next;
                    slow = slow->next;
                }
                return ptr;
            }
            
        }
        return nullptr;
    }
};

相关文章:

  • 【C++】memset和memcpy函数
  • 案例驱动的 IT 团队管理:创新与突破之路:第二章 团队组建:从人才画像到生态构建-2.2.2案例:某游戏公司“特种作战小组“模式
  • NAT及P2P通信
  • 本地部署deepseek-r1建立向量知识库和知识库检索实践【代码】
  • defineExpose函数
  • matlab R2024b下载教程及安装教程(附安装包)
  • 嵌入式面经-C语言:智能指针,`#define` 和 `const`,`typedef`,头文件中定义静态变量
  • turfjs多边形切割多边形求交集
  • centos 如何将 nginx reload权限给其他用户
  • Linux安装部署Elasticsearch8 全过程记录
  • Nodejs使用redis
  • 解决leetcode第3480题删除一个冲突对后的最大子数组数目
  • Jocker靶机全面解析:漏洞挖掘、渗透测试与防御策略
  • RuoYi-Vue路由,Node
  • HOVER:人形机器人的多功能神经网络全身控制器
  • Leetcode-回溯-组合型
  • Vue 中如何使用 nextTick?
  • 解决uni-app授权弹框华为审核拒绝
  • OpenAI--Agent SDK简介
  • linux入侵排查-综合日志分析
  • 修订占比近30%收录25万条目,第三版《英汉大词典》来了
  • 酒店就“保洁员调包住客港币”致歉,称希望尽早达成解决方案
  • 我的科学观|张峥:AI快速迭代,我们更需学会如何与科技共处
  • “富卫保险冠军赛马日”创双纪录,打造赛马旅游盛宴,印证香港联通国际优势
  • 一周观展|五一假期将到,特展大展陆续开幕
  • 演员孙俪:中年人没有脆弱的时间,学习胡曼黎不内耗