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;
    }
}
相关推荐
wabs6661 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
雨落在了我的手上3 小时前
Java数据结构(十四):Map和Set
数据结构
码行山野赴时序归途3 小时前
链表家族收官篇:循环链表
c语言·开发语言·数据结构·链表
船厂电气自动化ai大模型5 小时前
AI大模型与数学|第81天 课程:正交向量、正交基、格拉姆‑施密特(Gram‑Schmidt)正交化
开发语言·数据结构·人工智能·线性代数·机器学习
库玛西5 小时前
数据结构与算法之美:树、森林与二叉树全解析
c语言·数据结构·笔记·考研·算法·学习方法
careathers6 小时前
【数据结构】队列
java·数据结构
Rabitebla7 小时前
【Linux系统编程】指令(三):创建、删除、复制、移动、看内容
linux·数据结构·c++·算法
我不会起名字3228 小时前
一天一道力扣Hot100(36):深度优先算法---组合总和
数据结构·c++·后端·python·算法·go
雨落在了我的手上8 小时前
Java数据结构(十五):哈希表
数据结构
有点。18 小时前
C++03阶段练习(练习题)
数据结构·算法·图论