0%

代码随想录第十一天

链表-链表相交

题目链接

还是简单的双指针问题,我感觉leetcode这道题还是有点问题,skipA/B都没在参数里面
(这道题目看的是节点的地址是否相等)

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
struct ListNode* getIntersectionNode(struct ListNode* headA, struct ListNode* headB) {
typedef struct ListNode ListNode;
ListNode* ListNodeA = headA;
ListNode* ListNodeB = headB;
int lenA = 0;
int lenB = 0;
int lenAB = 0;
while (ListNodeA != NULL) {
lenA++;
ListNodeA = ListNodeA->next;
}
while (ListNodeB != NULL) {
lenB++;
ListNodeB = ListNodeB->next;
}

if (lenA > lenB) {
ListNodeA = headA;
ListNodeB = headB;
lenAB = lenA - lenB;
}
else {
ListNodeA = headB;
ListNodeB = headA;
lenAB = lenB - lenA;
}

while (lenAB-- && ListNodeA != NULL) {
ListNodeA = ListNodeA->next;
}

while (ListNodeA != NULL) {
if (ListNodeA == ListNodeB)
return ListNodeA;
ListNodeA = ListNodeA->next;
ListNodeB = ListNodeB->next;
}
return NULL;
}