0
点赞
收藏
分享

微信扫一扫

Leetcode刷题笔记(c++)_剑指 Offer 52. 两个链表的第一个公共节点

朱悟能_9ad4 2022-04-30 阅读 33

双指针

原理:
在这里插入图片描述

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if(!headA||!headB)return NULL;
        ListNode* pa=headA;
        ListNode* pb=headB;
        while(pa!=pb){
            pa=(pa?pa->next:headB);
            pb=(pb?pb->next:headA);
        }
        return pa; 
    }
};

在这里插入图片描述

哈希表查找

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        unordered_set<ListNode*>hashset;
        while(headA){
            hashset.insert(headA);
            headA=headA->next;
        }
        bool flag=0;
        while(headB){
            if(hashset.count(headB))return headB;
            headB=headB->next;
        }
        return NULL;        
    }
};

在这里插入图片描述

举报

相关推荐

0 条评论