题目:
输入两个链表,找出它们的第一个公共结点。
思路:
1、遍历一个链表并用map保存,然后再遍历另一个查找
2、可以讲两个链表尾部相接,然后判断是否存在环,这个代码就不写了
代码:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2)
{
if(NULL == pHead1 || NULL == pHead2)
{
return NULL;
}
set<ListNode*> NodeSet;
ListNode * Tmp = pHead1;
while(NULL != Tmp)
{
NodeSet.insert(Tmp);
Tmp = Tmp->next;
}
Tmp = pHead2;
while(Tmp != NULL)
{
if(NodeSet.find(Tmp) != NodeSet.end())
{
return Tmp;
}
Tmp = Tmp->next;
}
return NULL;
}
};