圖解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~