/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ #include <unordered_set> class Solution { public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { if(pHead1==nullptr&&pHead2==nullptr) { return NULL; } std::unordered_set<ListNode*> visited; while(pHead1!=nullptr) {visited.insert(pHead1);pHead1=pHead1->next;} while(pHead2!=nullptr) { if(visited.find(pHead2)!=visited.end()) { return pHead2; } visited.insert(pHead2); pHead2=pHead2->next; } return NULL; } };