图解LeetCode刷题计划
1、写在前面
手绘漫画系列正式上线!!!“图解LeetCode刷题计划” 来了!!!
今天是第二十一期,争取每天一期,最多两天一期,欢迎大家监督我。。。
2、题目
首先看一下题目,
非常巧妙的一个题,看到思路的时候都惊呆了,这种如果做过就会有印象,下次遇到可能就能很好地做出来了!
3、正文
一起来看:
思路是双指针,分别指向两个链表的头节点,循环这个链表,之后再去循环另一个链表。
分为两种情况:
-
一种是没有交点;
循环之后就返回NULL
,因为没有交点。 -
另一种是有交点;
循环之后两个指针都指向了交点。
有一种很浪漫的说法,就是——如果有缘,必会相见~
4、代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
auto a=headA,b=headB;
while(a!=b){
if(a) a=a->next;
else a=headB;
if(b) b=b->next;
else b=headA;
}
return a;
}
};
如果有幸帮到你,请帮我点个【赞】,给个【关注】!如果能顺带【评论】给个鼓励,我将不胜感激。
如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~