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

阅读 34

2022-04-30

双指针

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

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)

0 0 举报