2021年02月02日 周二 天气晴 【不悲叹过去,不荒废现在,不惧怕未来】
解题思路:
侧面分析:从整体上把握,自己的路走完之后,就去走对方的路,当第二次走到终点的时候,两个人就都走了M+N
步,倒推回去,则两个人第一次相遇的点即为所求。
直接分析:当第二个人到达终点时,第一个人刚好走完了两者之差,所以后面再一起走的话,就会在第一个公共点处相遇了。
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
if(headA==nullptr || headB==nullptr) return nullptr;
ListNode *hA = headA, *hB = headB;
while(hA!=hB){
hA = hA?hA->next:headB;
hB = hB?hB->next:headA;
}
return hA;
}
};
参考文献
《剑指offer 第二版》
https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/solution/shuang-zhi-zhen-fa-lang-man-xiang-yu-by-ml-zimingm/