标签:
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2
↘
c1 → c2 → c3
↗
B: b1 → b2 → b3
begin to intersect at node c1.
Notes:
null.
Credits:
Special thanks to @stellari for adding this problem and creating all test cases.
Linked List
这道题,没想到啥好的算法,就直接用了set,不过也AC了,就是先将一个线性表的所有节点都导进去,然后再对另一个链表从头开始查找就完了
#include<iostream>
#include <set>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
multiset<ListNode*> temp_set;
if(headA==NULL||headB==NULL)
return NULL;
ListNode* ptr0=headA;
while(ptr0!=NULL)
{
temp_set.insert(ptr0);
ptr0=ptr0->next;
}
ListNode* ptr1=headB;
while(ptr1!=NULL)
{
if(temp_set.count(ptr1)==1)
return ptr1;
ptr1=ptr1->next;
}
return NULL;
}
int main()
{
}#include<iostream>
#include <set>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
multiset<ListNode*> temp_set;
if(headA==NULL||headB==NULL)
return NULL;
ListNode* ptr0=headA;
while(ptr0!=NULL)
{
temp_set.insert(ptr0);
ptr0=ptr0->next;
}
ListNode* ptr1=headB;
while(ptr1!=NULL)
{
if(temp_set.count(ptr1)==1)
return ptr1;
ptr1=ptr1->next;
}
return NULL;
}
int main()
{
}
leetcode_160题——Intersection of Two Linked Lists(线性表,哈希表)
标签:
原文地址:http://www.cnblogs.com/yanliang12138/p/4523384.html