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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

每天一道LeetCode-----复制一个带有随机节点的链表

發布時間:2024/4/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天一道LeetCode-----复制一个带有随机节点的链表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Copy List with Random Pointer

原題鏈接Copy List with Random Pointer

深拷貝一個鏈表,鏈表節點的成員包括

  • 指向下一個節點的指針
  • 指向一個隨機節點的指針
  • 節點值

主要的影響在隨機節點的拷貝,處理不好會引發遞歸拷貝,解決方法是采用一個map記錄原節點和復制后的節點

代碼如下

/*** Definition for singly-linked list with a random pointer.* struct RandomListNode {* int label;* RandomListNode *next, *random;* RandomListNode(int x) : label(x), next(NULL), random(NULL) {}* };*/ class Solution { public:RandomListNode *copyRandomList(RandomListNode *head) {unordered_map<RandomListNode*, RandomListNode*> hash;return copyList(head, hash);} private:RandomListNode* copyList(RandomListNode* head, unordered_map<RandomListNode*, RandomListNode*>& hash){if(!head)return nullptr;/* 拷貝過,直接返回 */if(hash.find(head) != hash.end())return hash[head];auto node = new RandomListNode(head->label);hash[head] = node;node->next = copyList(head->next, hash);node->random = copyList(head->random, hash);return node;} };

總結

以上是生活随笔為你收集整理的每天一道LeetCode-----复制一个带有随机节点的链表的全部內容,希望文章能夠幫你解決所遇到的問題。

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