标签:
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