力扣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;// 返回两人第一次相遇的地方
    }
相关推荐
一水鉴天16 分钟前
整体设计 逻辑系统程序 之34七层网络的中台架构设计及链路对应讨论(含 CFR 规则与理 / 事代理界定)
人工智能·算法·公共逻辑
DuHz19 分钟前
C程序中的数组与指针共生关系
linux·c语言·开发语言·嵌入式硬件·算法
而后笑面对20 分钟前
力扣2025.10.19每日一题
算法·leetcode·职场和发展
·白小白37 分钟前
力扣(LeetCode) ——11.盛水最多的容器(C++)
c++·算法·leetcode
沐浴露z2 小时前
【JVM】详解 垃圾回收
java·jvm·算法
代码欢乐豆3 小时前
编译原理机测客观题(7)优化和代码生成练习题
数据结构·算法·编译原理
Scc_hy3 小时前
强化学习_Paper_2000_Eligibility Traces for Off-Policy Policy Evaluation
人工智能·深度学习·算法·强化学习·rl
leke20034 小时前
2025年10月17日
算法
CoovallyAIHub4 小时前
Mamba-3震撼登场!Transformer最强挑战者再进化,已进入ICLR 2026盲审
深度学习·算法·计算机视觉
Aqua Cheng.4 小时前
代码随想录第七天|哈希表part02--454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
java·数据结构·算法·散列表