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; } };
|