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

力扣HOT100之链表:142. 环形链表 II


这道题已经刷过3回了,还好还记得思路,直接一遍过,说下主要的思路。
首先要判断一个链表是否有环,我们就需要定义快慢指针进行判断,在起始阶段,快慢指针都指向链表的头节点,然后进行循环,当快指针fastfast -> next不为空时循环继续,若循环退出,就说明链表中没有环,直接返回nullptr,若在循环内出现了快慢指针相遇的情况,则说明链表内有环,我们进行下一步分析,如下图所示。

假设从链表头节点到环的入口的距离为x,从入口到快慢指针相遇处(沿前进方向)的距离为y,从快慢指针相遇处到环的入口(沿前进方向)的距离为z,当快慢指针相遇时,慢指针在环内一定没走完一圈(详细证明可以看我的这篇博客),则快慢指针的路程关系为2倍的关系,根据上面的性质我们可以得到一个原始的等式,然后经过一步步化简可以得到划红线的结果,其重要性质已经用红字写出,根据上面的性质,我们可以新定义一个慢指针result,从链表头节点出发,每次只移动一个节点,而慢指针slow同时继续向前进,当slowresult相遇时,slow走的路程为z+(n - 1)(y + z)(n - 1圈+z),而result走了x,当二者相遇时,相遇处就是入口,直接返回即可。

/**
 * 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* fast = head;
        ListNode* slow = head;
        while(fast && fast -> next){
            fast = fast -> next -> next;  //快指针走两步
            slow = slow -> next;    //慢指针走一步
            if(fast == slow){  //链表有环且在环内相遇
                ListNode* result = head;
                while(result != slow){
                    result = result -> next;
                    slow = slow -> next;
                }
                return result;
            }
        }
        return nullptr;   //链表无环
    }
};

相关文章:

  • Spring MVC 返回 JSON 视图的方式及对比(6种)
  • [Linux系统编程]多线程
  • 从ERTS会议学习Scade的发展
  • x-cmd install | Slumber - 告别繁琐,拥抱高效的终端 HTTP 客户端
  • 软件工程第三章习题
  • 【蓝桥杯】Python大学A组第十五届省赛
  • 大数据处理全链路优化:从并行文件处理到可视化加速的工程实践
  • 【Linux工具篇】保姆级配置vscode连接远端主机以及免密配置
  • react 18 可中断的理解以及应用
  • 蓝桥杯第十二届省赛B组C++真题解析
  • 4.7正则表达式
  • el-select组件与el-tree组件结合实现下拉选择树型结构框
  • 深度学习实战电力设备缺陷检测
  • leetcode 416. 分割等和子集 中等
  • 科技快讯 | DeepSeek 公布模型新学习方式;Meta发布开源大模型Llama 4;谷歌推出 Android Auto 14.0 正式版
  • IntelliJ IDEA下开发FPGA
  • 【go】类型断言
  • 学习海康VisionMaster之直线查找组合
  • ResNet改进(22):提升特征选择能力的卷积神经网络SKNet
  • 深入解析 MySQL 底层架构:从存储引擎到查询优化
  • 俄乌直接谈判勉强收场,特朗普再次“电话外交”能否有用?|907编辑部
  • 俄乌刚谈完美国便筹划与两国领导人通话,目的几何?
  • 多图|多款先进预警机亮相雷达展,专家:中国预警机已达世界先进水平
  • 国际金价下跌,中概股多数上涨,穆迪下调美国主权信用评级
  • 音乐节困于流量
  • 大英博物馆展歌川广重:他是梵高最钟爱的浮世绘名家