力扣刷题【3】相交链表

翻译一下:

就是两个链表,如果他们相交,他们就共享交点之后的节点,然后要返回第一个相交的点,如果没有相交就返回NULL。
思路:像这种链表相关的题我们一般都可以想想指针,这道题我们可以用双指针。

假设:

  • A:a1 → a2 → c1 → c2 → c3

  • B:b1 → b2 → b3 → c1 → c2 → c3

指针移动过程:

  1. pA = a1, pB = b1

  2. 一步步走,pAa2pBb2

  3. pAc1pBb3

  4. pAc2pBc1(还没相等)

  5. pAc3pBc2

  6. pAnullpBc3

  7. pA 跳到 headBb1),pBnull

  8. pAb2pB 跳到 headAa1

  9. pAb3pBa2

  10. pAc1pBc1相遇,返回 c1

PA走过的总路程是A不相交的点+共享节点+B不相交的节点

PB走的是B不相交的点+共享节点+A不相交的点

如果两个链表相交那最终他们PA和PB一定会相遇并且在第一次相交的点相遇。

代码:

java 复制代码
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if(headA == null || headB == null){
            return null;
        }

        ListNode pA = headA;
        ListNode pB = headB;

        //当pa和pb不相交时一直循环
        while(pA!=pB){
            pA = (pA == null) ? headB : pA.next;
            pB = (pB == null) ? headA : pB.next;
        }
        //返回的要么是null两个不相交,要么是交点
        return pA;
    }
}
相关推荐
djarmy24 分钟前
C 标准库 `<stdio.h>` 完整函数清单(官方标准 + 常用全部函数)
c语言·c++·算法
七牛云行业应用29 分钟前
NotebookLM 手机版上线了,这份完整指南帮你把它用起来
算法
城事漫游Molly32 分钟前
定量研究设计清单:问卷、实验与变量操作化怎么做?
大数据·人工智能·算法·ai写作·论文笔记
Epiphany.55635 分钟前
带依赖关系的最短路问题
算法
洛水水1 小时前
【力扣100题】22. 矩阵置零
算法·leetcode·矩阵
Liangwei Lin1 小时前
LeetCode 78. 子集
数据结构·算法·leetcode
多加点辣也没关系1 小时前
数据结构与算法|第二十四章:算法思维总结与实战
算法·代理模式
炽烈小老头1 小时前
【每天学习一点算法 2026/05/11】排序链表
学习·算法·链表
wefg11 小时前
一些零散的算法
c++·算法
khalil10201 小时前
代码随想录算法训练营Day-48 单调栈02 | 42. 接雨水、84.柱状图中最大的矩形
数据结构·c++·算法·leetcode·单调栈·接雨水