力扣一单简单题,看完大佬的题解真是佩服得五体投地!
虽是一道简单题,当我吭哧吭哧写了几十行后,看到大佬仅仅几行直接秒掉,只能说算法的本质还是数学,数学逻辑思维真是太重要了,有时候真得慢慢去培养这种思维,才能在面试中脱颖而出!
这里贴上题目链接:链表相交
代码的整体逻辑十分清晰,核心思想就是让A B的两个指针走相同的步数,如果走了相同步数(不相交的话,最终A B都是nullptr;如果相交的话那么刚好会在交点相遇)
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
ListNode *A = headA, *B = headB;
while (A != B) {
A = A != nullptr ? A->next : headB;
B = B != nullptr ? B->next : headA;
}
return A;
}
};
作者:Krahets
链接:https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/solutions/1190240/mian-shi-ti-0207-lian-biao-xiang-jiao-sh-b8hn/
来源:力扣(LeetCode)
不懂的建议大家看看大佬的原贴,这里仅记录这种解题思想以时刻提醒自己。