标签:
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
.1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { 12 13 14 if(headA==NULL||headB==NULL) 15 { 16 return NULL; 17 } 18 19 ListNode *hA=headA,*hB=headB; 20 21 int lenA=1,lenB=1; 22 while(hA->next!=NULL) 23 { 24 lenA++; 25 hA=hA->next; 26 } 27 28 while(hB->next!=NULL) 29 { 30 lenB++; 31 hB=hB->next; 32 } 33 34 35 if(hA!=hB) 36 { 37 return NULL; 38 } 39 40 int dis=lenA-lenB; 41 42 43 hA=headA; 44 hB=headB; 45 46 if(dis>0) 47 { 48 while(dis) 49 { 50 hA=hA->next; 51 dis--; 52 } 53 } 54 55 if(dis<0) 56 { 57 dis=-dis; 58 while(dis) 59 { 60 hB=hB->next; 61 dis--; 62 } 63 } 64 65 while(hA!=hB) 66 { 67 hA=hA->next; 68 hB=hB->next; 69 } 70 71 72 return hA; 73 } 74 }; 75
【leetcode】Intersection of Two Linked Lists
标签:
原文地址:http://www.cnblogs.com/reachteam/p/4251661.html