题目描述
输入两个链表,找出它们的第一个公共结点。
思路:由于参数都是单链表,那么意味着遇到第一个公共结点后,后边的结点都是公共结点,用哈希set,将其中一个链表所有的结点先放入set中,然后遍历第二个链表,遍历的同时查找set,若查到,则当前结点即为第一个公共结点。
代码:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
set<ListNode*> myset;
ListNode* p1 = pHead1,*p2 = pHead2;
while(p1 != NULL)
{
myset.insert(p1);
p1 = p1->next;
}
while(p2!=NULL)
{
if(myset.find(p2)!= myset.end())
{
return p2;
}
p2 = p2->next;
}
return nullptr;
}
};