标签:leetcode intersection of two
题目链接:https://leetcode.com/problems/intersection-of-two-linked-lists/
题目:
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.
解题思路:跟Remove Nth Node From End of List这道题一样。把从后往前,变为从前往后。分别计算两个链表的个数,减去他们之前的差,再一起搜索。找到相同的地方,return就解决了。
class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *Apoint = headA , *Bpoint = headB; int i = 0,j = 0; for ( ; headA != NULL; headA = headA->next) i++; for ( ; headB != NULL; headB = headB->next) j++; if( i > j) { for (int k = 0; k < i-j; k++) Apoint = Apoint->next; } else { for (int k = 0; k < j-i; k++) Bpoint = Bpoint->next; } while ( Apoint != Bpoint) { Apoint = Apoint->next; Bpoint = Bpoint->next; } return Apoint; } };
LeetCode_Intersection of Two Linked Lists
标签:leetcode intersection of two
原文地址:http://blog.csdn.net/vanish_dust/article/details/44150693