leetcode hot100刷题日记——11.相交链表


解答:

cpp 复制代码
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        //方法一:先遍历一条链表,存节点;再遍历另一条链表,找对应的节点有没有存过
        // unordered_set<ListNode*>vis;
        // ListNode *temp=headA;
        // while(temp!=nullptr){
        //     vis.insert(temp);
        //     temp=temp->next;
        // }
        // temp=headB;
        // while(temp!=nullptr){
        //     if(vis.count(temp)!=0){
        //         return temp;
        //     }
        //     temp=temp->next;
        // }
        // return nullptr;

        //方法二:双指针
        if(headA==nullptr || headB==nullptr){
            return nullptr;
        }
        ListNode *pA=headA,*pB=headB;
        while(pA!=pB){
            pA=pA==nullptr?headB:pA->next;
            pB=pB==nullptr?headA:pB->next;
        }
        return pB;
    }
};

方法一:

时间复杂度O(M+N)

空间复杂度O(N)

方法二:

时间复杂度O(M+N)

空间复杂度O(1)

方法二思想详见官方题解link

直白理解:两个链表左端对齐,后面的分别用对方的给补上,如果两个一样长,那就不用找到后面补上的部分;如果不一样长,分别经过对方的补上之后相同的部分就能拉齐了

相关推荐
冠位观测者5 分钟前
【Leetcode 每日一题】2942. 查找包含给定字符的单词
算法·leetcode·职场和发展
yi个名字24 分钟前
C++继承:从生活实例谈面向对象的精髓
开发语言·c++·链表
蓝心湄27 分钟前
C语言-枚举
c语言·开发语言·算法
轮到我狗叫了33 分钟前
力扣小题, 力扣113.路径总和II力扣.111二叉树的最小深度 力扣.221最大正方形力扣5.最长回文子串更加优秀的算法:中心扩展算法
算法·leetcode·深度优先
黎明smaly40 分钟前
【C语言】复习~数组和指针
c语言·开发语言·数据结构·c++·leetcode
haven-8521 小时前
最大似然估计(Maximum Likelihood Estimation, MLE)详解
算法·机器学习·概率论
逐光沧海1 小时前
排序和排列——蓝桥杯备考
算法·蓝桥杯
小琪琪:)2 小时前
【刷题】质数因子
算法
Christo32 小时前
SIAM-2007《k-means++: The Advantages of Careful Seeding》
大数据·人工智能·算法·机器学习·支持向量机·kmeans
远瞻。3 小时前
【论文精读】2023 AAAI--FastRealVSR现实世界视频超分辨率(RealWorld VSR)
论文阅读·算法·超分辨率重建