[leetcode_160]Intersection of Two Linked Lists

判断两个单链表的重合节点。思路很简单,长度那个链表,先走差距步即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        int countA = 0;
        int countB = 0;
        ListNode * tmpA = headA;
        ListNode * tmpB = headB;
        while(NULL != tmpA)
        {
            countA++;
            tmpA = tmpA->next;
        }
        while(NULL != tmpB)
        {
            countB++;
            tmpB = tmpB->next;
        }
        int move = 0;
        if (countA > countB)
        {
            while (move < countA - countB)
            {
                headA = headA->next;
                move++;
            }
        }
        else
        {
            while (move < countB - countA)
            {
                headB = headB->next;
                move++;
            }
        }
        while (headA != headB)
        {
            headA = headA->next;
            headB = headB->next;
        }
        return headA;
    }
};
Licensed under CC BY-NC-SA 4.0