标签:style blog http io ar color os 使用 sp
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
利用hash_table 可以提升时间到O(n+m),可是空间变O(n)了
1 class Solution { 2 public: 3 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { 4 unordered_map<ListNode*,int> m; 5 while(headA!=NULL){ 6 m[headA] = 1; 7 headA=headA->next; 8 } 9 while(headB!=NULL){ 10 if(m[headB]==1) return headB; 11 headB=headB->next; 12 } 13 return NULL; 14 } 15 };
1 #include <iostream> 2 #include <unordered_map> 3 using namespace std; 4 5 /** 6 * Definition for singly-linked list. 7 */ 8 struct ListNode { 9 int val; 10 ListNode *next; 11 ListNode(int x) : val(x), next(NULL) {} 12 }; 13 14 /** 15 class Solution { 16 public: 17 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { 18 unordered_map<ListNode*,int> m; 19 while(headA!=NULL){ 20 m[headA] = 1; 21 headA=headA->next; 22 } 23 while(headB!=NULL){ 24 if(m[headB]==1) return headB; 25 headB=headB->next; 26 } 27 return NULL; 28 } 29 }; 30 */ 31 class Solution{ 32 public: 33 ListNode* getIntersectionNode(ListNode *headA,ListNode * headB) 34 { 35 ListNode * h1=headA; 36 ListNode * h2=headB; 37 if(headA==NULL||headB==NULL) return NULL; 38 bool flag1=true,flag2=true; 39 while(headA!=NULL&&headB!=NULL){ 40 if(headA==headB) return headA; 41 headA=headA->next; 42 headB=headB->next; 43 if(headA==NULL&&flag1){ headA=h2; flag1 =false;} 44 if(headB==NULL&&flag2){ headB=h1; flag2 =false;} 45 } 46 return NULL; 47 } 48 }; 49 50 int main() 51 { 52 ListNode head1(1); 53 ListNode head2(2); 54 ListNode node1(3); 55 ListNode node2(4); 56 head1.next = &node1; 57 node1.next = &node2; 58 head2.next = &node2; 59 Solution sol; 60 ListNode *ret = sol.getIntersectionNode(&head1,&head2); 61 if(ret==NULL) cout<<"NULL"<<endl; 62 else cout<<ret->val<<endl; 63 return 0; 64 }
[LeetCode] Intersection of Two Linked Lists 两链表是否相交
标签:style blog http io ar color os 使用 sp
原文地址:http://www.cnblogs.com/Azhu/p/4149738.html