力扣hot100-链表

文章目录

概要

链表(Linked List)是数据结构中的一种,用于存储具有线性关系的数据。在链表中,每个元素称为一个节点(Node),每个节点包含两个部分:一个是数据域(存储数据),另一个是指针域(指向下一个节点)。链表的结构使得它在某些情况下比数组更加高效,特别是在插入和删除操作上。

链表的类型

  1. 单向链表(Singly Linked List):

    • 每个节点只有一个指向下一个节点的指针。
    • 头节点(Head)是链表的起点,尾节点(Tail)指向 null。
  2. 双向链表(Doubly Linked List):

    • 每个节点有两个指针,分别指向前一个节点和下一个节点。
    • 头节点的前指针和尾节点的后指针都指向 null。
  3. 循环链表(Circular Linked List):

    • 单向链表或双向链表的变种。
    • 尾节点的下一个指针指向头节点,形成一个循环。

题目:相交链表

原题链接:相交链表

题解

核心:其实就是让2个指针走一样的距离,消除步行差,那就一定可以一起走到相交点

因为两个链表如果相交,则它们从相交点到结尾的所有节点都是相同的。因此,我们让指针 p1 和 p2 分别遍历两个链表。如果 p1 到达链表 A 的末尾,则将其重定位到链表 B 的头部;同样地,如果 p2 到达链表 B 的末尾,则将其重定位到链表 A 的头部。这样,两指针最终会在相交点处相遇,即第一个共同节点,即为相交点。

java 复制代码
    public static ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode p1 = headA;
        ListNode p2 = headB;
        while (p1 != p2) {
            p1 = p1 == null ? headB : p1.next;
            p2 = p2 == null ? headA : p2.next;
        }
        return p1;
    }

评论区看到一个【还有句话:走到尽头见不到你,于是走过你来时的路,等到相遇时才发现,你也走过我来时的路。】

java 复制代码
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode she = headA;
        ListNode he = headB;
        // 直到两人相遇
        while (she != he) {
            if (she != null) {
                she = she.next;// 如果她没走到尽头就一直走下去
            } else {
                she = headB;// 直到尽头也没遇见他,所以她去往他走过的路
            }
            if (he != null) {
                he = he.next;
            } else {
                he = headA;
            }
        }
        return he;// 返回两人第一次相遇的地方
    }
相关推荐
yi0116 小时前
DAY28: LeetCode 111. 二叉树的最小深度
人工智能·笔记·python·算法·leetcode·二叉树·递归
wuyk5556 小时前
27.LeetCode 2265. 统计值等于子树平均值的节点数 —— 后序遍历实战
stm32·单片机·嵌入式硬件·算法
xiangyun616 小时前
C++ list 模拟实现(二):const迭代器与反向迭代器,模板的黑魔法
开发语言·数据库·c++·算法·stl·list
xxwl5857 小时前
三、区域赛算法模版第三章---字符串相关算法
笔记·学习·算法
信奥卷王7 小时前
[GESP202509 六级] 划分字符串(含视频)
数据结构·算法
酒醉的胡铁7 小时前
相似度搜索的常见算法
算法·ai
局部有解7 小时前
Leetcode Hot100 - 最长连续序列
算法·leetcode·职场和发展
行者全栈架构师7 小时前
给开源 Rust 工具加一个新检查项,TRAE 帮我从想法跑到构建产物:全链路实战
前端·算法·架构
行者全栈架构师8 小时前
【鸿蒙心迹】冷启动从 2.8s 优化到 0.9s——耗时拆解与数据对比实战(HarmonyOS 7.x)
前端·算法·架构
LXY_BUAA8 小时前
《嵌入式操作系统》_framebuffer驱动_20261008
linux·运维·算法