#include<iostream>
#include<unordered_map>
using namespace std;
struct ListNode
{
int val;
ListNode* next;
/* data */
};
// class Solution {
// public:
// ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
// auto m=headA;
// auto n=headB;
// while(m!=n&&(m||n))
// {
// if(m==NULL)
// {
// m=headB;
// }
// else
// {
// m=m->next;
// }
// if(n==NULL)
// {
// n=headA;
// }
// else
// {
// n=n->next;
// }
// }
// return n;
// }
// };//奇妙的解法 关于公共遍历的特点
class Solution {
unordered_map<ListNode*,int>p;
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
while(headA!=NULL)
{
p[headA]++;
headA=headA->next;
}
while(headB!=NULL)
{
if(p[headB]==0)
{
headB=headB->next;
}
else
{
return headB;
}
}
return NULL;
}
};
//草 这怎么能没想到 只会双层遍历 这个遍历用来节省了循环嵌套
//本来是for for嵌套 现在变成了 for +for检查map
int main()
{
}
剑指 Offer 52. 两个链表的第一个公共节点
最新推荐文章于 2024-11-06 17:23:27 发布