力扣160. 最浪漫的相交連結串列
阿新 • • 發佈:2021-02-03
路至盡頭,不見君,待到相遇,君亦如我
題目:
編寫一個程式,找到兩個單鏈表相交的起始節點。
如下面的兩個連結串列:
解析:
連結串列A和B相交與否先不論,根據A+B = B + A。那麼兩指標先走完自己的連結串列後,再走對方的連結串列。那麼兩個連結串列走過的路程相等。
那麼如果相交,可以看作將相交部分去掉,那麼兩個指標先走完彼此的路,最後攜手走上共同的路。(是不是有點浪漫)
程式碼如下:
class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if(headA == nullptr || headB == nullptr) return nullptr; ListNode *pa = headA; ListNode *pb = headB; while(pa!=pb) { pa = !pa ? headB : pa->next; pb = !pb ? headA : pb->next; } return pa; } };