标签:
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
.Runtime: 72ms
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 if(!headA || !headB) return NULL; 13 14 if(getLength(headA) > getLength(headB)){ 15 int len = getLength(headA); 16 while(len > getLength(headB)){ 17 headA = headA->next; 18 len--; 19 } 20 } 21 else{ 22 int len = getLength(headB); 23 while(len > getLength(headA)){ 24 headB = headB->next; 25 len--; 26 } 27 } 28 29 while(headA){ 30 if(headA == headB) 31 return headA; 32 headA = headA->next; 33 headB = headB->next; 34 } 35 return NULL; 36 } 37 38 int getLength(ListNode* head){ 39 int result = 0; 40 41 while(head){ 42 head = head->next; 43 result++; 44 } 45 return result; 46 } 47 };
Intersection of Two Linked Lists
标签:
原文地址:http://www.cnblogs.com/amazingzoe/p/4857938.html