hot100 160.相交链表

思路:

1.算法流程:

(1)初始化两个指针:p = headA,q = headB。

(2)不断循环,直到p = q。

(3)每次循环,p和q各走一步。具体来说:如果p不是空节点,那么更新p为p.next,否则更新p为headB;如果q不是空节点,那么更新q为q.next,否则更新q为headA。

(4)循环结束时,如果两条链表相交,那么此时p和q都在相交的起始节点处,返回p;如果两条链表不相交,那么p和q都在空节点,所以也可以返回p,即空节点。

2.复杂度分析:

(1)时间复杂度:O(m + n),其中m是第一条链表的长度,n是第二条链表的长度。除了交点,每个节点都会被指针p访问至多一次,每个节点都会被指针q访问至多一次。

(2)空间复杂度:O(1)。

附代码:

java 复制代码
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode p = headA;
        ListNode q = headB;
        while(p != q){
            p = p != null ? p.next : headB;
            q = q != null ? q.next : headA;
        }
        return p;
    }
}
相关推荐
ambition202424 小时前
操作系统同步:读者-写者问题与读写公平法详解(附每个 PV 操作含义)
linux·开发语言·数据结构·unix
疯狂打码的少年14 小时前
【数据结构】图的存储结构:邻接矩阵与邻接表
数据结构·笔记
203号居民14 小时前
LeetCode hot 100 —41. 缺失的第一个正数
数据结构·算法·leetcode
2401_8628808218 小时前
数据结构 --- 栈
c语言·数据结构·算法
额额额对了19 小时前
数据结构:二叉树
c语言·数据结构·算法
qeen8720 小时前
【数据结构】红黑树的算法原理解析与实现
开发语言·数据结构·c++·算法·红黑树
m0_5474866621 小时前
《数据结构与算法(Python语言版)》全套PPT课件2026
数据结构·算法
hold?fish:palm21 小时前
27 合并两个有序链表
数据结构·链表
个 人 练 习 生21 小时前
数据结构入门:算法复杂度
开发语言·数据结构·经验分享·学习·程序人生·算法
月华路1 天前
Guava 图数据结构 graph 从基础概念到原理分析
java·数据结构·guava·图搜索