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

【练习】【链表】力扣热题100 160. 相交链表

题目

在这里插入图片描述
找相交节点。

来源:力扣热题100 160. 相交链表


思路(注意事项)

定义两个指针分别从两个端点向后遍历,如果到链表的终点还没有相遇,则让到达终点的指针指向另一条链表的起始点继续向后遍历。

  • 原理是: 使得两个指针在找到相交节点时所移动的距离是相等的。

纯代码

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode *A = headA, *B = headB;
        while (A != B)
        {
            A = A != nullptr ? A -> next : headB;
            B = B != nullptr ? B -> next : headA;
        }
        return A;
    }
};

题解(加注释)

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        // 定义两个指针 A 和 B,分别指向链表 headA 和 headB 的头节点
        ListNode *A = headA, *B = headB;

        // 当 A 和 B 不相遇时,继续遍历
        while (A != B)
        {
            // 如果 A 不为空,A 指向下一个节点;否则,A 指向 headB
            A = A != nullptr ? A -> next : headB;
            // 如果 B 不为空,B 指向下一个节点;否则,B 指向 headA
            B = B != nullptr ? B -> next : headA;
        }

        // 返回相遇的节点(即相交节点)
        return A;
    }
};

http://www.kler.cn/a/572256.html

相关文章:

  • CC++的内存管理
  • 网络安全ctf试题 ctf网络安全大赛真题
  • stm32(hal库)学习笔记-时钟系统
  • BS架构(笔记整理)
  • npm、Yarn 与 pnpm:选择最适合你的包管理工具
  • 【Android】 工具篇:ProxyPin抓包详解---夜神模拟器
  • 突破光学成像局限:全视野光学血管造影技术新进展
  • 深度学习-大白话解释循环神经网络RNN
  • 医药行业哪些招聘管理系统有AI功能?
  • 基于vue3和flask开发的前后端管理系统(一):项目启动准备
  • 鸿蒙5.0实战案例:基于webview拉起自定义键盘
  • 【车规芯片】如何引导时钟树生长方向
  • C#基础及标准控件的使用,附登录案例
  • navicat下载与安装【带布丁】
  • printf 与前置++、后置++、前置--、后置-- 的关系
  • 从ETL到数仓分层:大数据处理的“金字塔”构建之道
  • Ubuntu 20.04下配置VSCode以支持ROS开发
  • 【Git原理与使用二】Git 分支管理
  • 解决git clone下载慢或者超时问题
  • 解决 Excel 模板填充痛点:开发一款高效实用的工具