日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode-剑指 Offer 52. 两个链表的第一个公共节点

發布時間:2025/4/5 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode-剑指 Offer 52. 两个链表的第一个公共节点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

劍指 Offer 52. 兩個鏈表的第一個公共節點

思路一:用set容器,不符合題意

/*** 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) {set<ListNode*> mySet;while(headA!=nullptr){mySet.insert(headA);headA = headA->next;}while(headB!=nullptr){if(mySet.find(headB)!=mySet.end()){return headB;}else{headB = headB->next;}}return nullptr;} };

思路二:雙指針

解題思路:
我們使用兩個指針 node1,node2 分別指向兩個鏈表 headA,headB 的頭結點,然后同時分別逐結點遍歷,當 node1 到達鏈表 headA 的末尾時,重新定位到鏈表 headB 的頭結點;當 node2 到達鏈表 headB 的末尾時,重新定位到鏈表 headA 的頭結點。

這樣,當它們相遇時,所指向的結點就是第一個公共結點。

作者:z1m
鏈接: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/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

我的理解: 兩個鏈表長度分別為L1+C、L2+C, C為公共部分的長度,按照樓主的做法: 第一個人走了L1+C步后,回到第二個人起點走L2步;第2個人走了L2+C步后,回到第一個人起點走L1步。 當兩個人走的步數都為L1+L2+C時就兩個家伙就相愛了

/*** 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) {if (headA == nullptr || headB == nullptr) {return nullptr;}ListNode* node1 = headA;ListNode* node2 = headB;while(node1 !=node2 ){node1 = node1!=nullptr ? node1->next : headB;node2 = node2!=nullptr ? node2->next : headA;}return node1;} };

總結

以上是生活随笔為你收集整理的LeetCode-剑指 Offer 52. 两个链表的第一个公共节点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。