LeetCode#160 | Nobilta's Blog
0%

LeetCode#160

LeetCode#160链表相交

题目链接
题意很简单,给你两个链表,然后判断这两个链表是否相交。
写这道题的题解主要是因为这个题解实在是太浪漫了(😭😭😭)
当链表A遍历完成,我们把下一个节点设为链表B的头节点(没错就是B的),遍历链表B的时候同理,如果两个链表能够相交,则遍历链表A和链表B的指针一定会相遇(这个结论其实很好理解,自己画图试一下就知道了),而如果不相交,则两个指针一定不能相遇(在nullptr相遇,也算是一种另类的相遇吧……)有了这个结论,那么这个题就很好写了。
强烈推荐:我最喜欢的题解链接,带视频的
附代码:

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
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode *curA = headA,*curB = headB;
bool flagA = true,flagB = true;//避免陷入死循环,用一个标记进行记录,大佬们如果有更好的办法可以留言
while(curA != nullptr && curB != nullptr)
{
if(curA == curB)
return curA;
curA = curA -> next;
curB = curB -> next;
if(curA == nullptr && flagA)
{
curA = headB;
flagA = false;
}
if(curB == nullptr && flagB)
{
curB = headA;
flagB = false;
}
}
return nullptr;
}
};
您的支持将鼓励我继续创作!