标签:str run cti find style http bsp algorithm ssi
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
.
My hints :
1、First walk two list saperately,and count the length of the two list:lenA,lenB
2、n = lenA - lenB,and let the point_A go n step first
3、then point_A,point_B go toghter,until point_A == point_B
My code:
个人感觉自己的思路更好理解,时间复杂度为m+n。(#^.^#)
class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *p1 = headA; ListNode *p2 = headB; if (p1 == NULL || p2 == NULL) return NULL; int n1 = 0; int n2 = 0; int n = 0; while(p1 != NULL){ n1++; p1 = p1->next; } while(p2 != NULL){ n2++; p2 = p2->next; } p1 = headA; p2 = headB; if(n1 > n2){ n = n1 - n2; while(n != 0){ p1 = p1->next; n--; } } if(n1 < n2){ n = n2 - n1; while(n != 0){ p2 = p2->next; n--; } } while (p1 != NULL && p2 != NULL) { if (p1 == p2) return p1; p1 = p1->next; p2 = p2->next; } return NULL; } };
discussion区还有更简单的算法My-accepted-simple-and-shortest-C++-code ,但是理解起来不是很好理解(个人感觉。。)
160. Intersection of Two Linked Lists
标签:str run cti find style http bsp algorithm ssi
原文地址:https://www.cnblogs.com/hozhangel/p/9477978.html