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

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

相关推荐
知乎的哥廷根数学学派34 分钟前
基于多物理约束融合与故障特征频率建模的滚动轴承智能退化趋势分析(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习
wifi chicken39 分钟前
Linux 内核开发之单链表的增删查改详解
linux·数据结构·链表
我是一只小青蛙88839 分钟前
位图与布隆过滤器:高效数据结构解析
开发语言·c++·算法
踩坑记录1 小时前
leetcode hot100 238.除了自身以外数组的乘积 medium
leetcode
eso19831 小时前
白话讲述监督学习、非监督学习、强化学习
算法·ai·聚类
chen_jared1 小时前
反对称矩阵的性质和几何意义
人工智能·算法·机器学习
海天一色y1 小时前
python---力扣数学部分
算法·leetcode·职场和发展
一起努力啊~1 小时前
算法刷题--哈希表
算法·面试·散列表
willingli1 小时前
c语言经典100题 61-70题
c语言·开发语言·算法
我是小疯子661 小时前
深入解析C++右值引用与移动语义
java·开发语言·算法