判断两个单链表的重合节点。思路很简单,长度那个链表,先走差距步即可。
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;
}
};
|