上题目:
**上代码:**都在代码里了鸭
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
//用hashset比较容易理解
//其中的count(key)成员函数,是统计key的元素个数
//用到这一题里面,这个key就是链表中的一个节点
//思路是:先遍历A,边遍历,边把A的节点插入到set中
//刚开始写成 unordered_set<ListNode> s; 注意这里应该是 节点指针
unordered_set<ListNode *> s;
//定义一个节点tmp
ListNode* tmp=headA;
//遍历A链表,每遍历一个节点,就把这个节点插入到set中
while(tmp!=NULL){
s.insert(tmp);
tmp=tmp->next;
}
//遍历完A,让tmp指向headB
tmp=headB;
while(tmp!=NULL){
if(s.count(tmp)){
return tmp;
}
tmp=tmp->next;
}
return NULL;
}
};