上题目:

**上代码:**都在代码里了鸭
/**
* 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;
}
};
该博客详细介绍了如何使用哈希集合找到两个单链表的交点。通过遍历其中一个链表并将节点存入集合,然后遍历另一个链表检查节点是否在集合中,从而找到交点。这种方法简单且高效,适用于处理链表问题。
1575

被折叠的 条评论
为什么被折叠?



