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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 138 复制带随机指针的链表-中等

發布時間:2023/12/4 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 138 复制带随机指针的链表-中等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給你一個長度為 n 的鏈表,每個節點包含一個額外增加的隨機指針 random ,該指針可以指向鏈表中的任何節點或空節點。

構造這個鏈表的 深拷貝。 深拷貝應該正好由 n 個 全新 節點組成,其中每個新節點的值都設為其對應的原節點的值。新節點的 next 指針和 random 指針也都應指向復制鏈表中的新節點,并使原鏈表和復制鏈表中的這些指針能夠表示相同的鏈表狀態。復制鏈表中的指針都不應指向原鏈表中的節點 。

例如,如果原鏈表中有 X 和 Y 兩個節點,其中 X.random --> Y 。那么在復制鏈表中對應的兩個節點 x 和 y ,同樣有 x.random --> y 。

返回復制鏈表的頭節點。

用一個由 n 個節點組成的鏈表來表示輸入/輸出中的鏈表。每個節點用一個 [val, random_index] 表示:

val:一個表示 Node.val 的整數。 random_index:隨機指針指向的節點索引(范圍從 0 到 n-1);如果不指向任何節點,則為 null 。

你的代碼 只 接受原鏈表的頭節點 head 作為傳入參數。

輸入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
輸出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

輸入:head = [[1,1],[2,1]]
輸出:[[1,1],[2,1]]

輸入:head = [[3,null],[3,0],[3,null]]
輸出:[[3,null],[3,0],[3,null]]

示例 4:

輸入:head = []
輸出:[]
解釋:給定的鏈表為空(空指針),因此返回 null。

提示:

0 <= n <= 1000 -10000 <= Node.val <= 10000 Node.random 為空(null)或指向鏈表中的節點。

代碼如下:

/* // Definition for a Node. class Node { public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;} }; */class Solution { public:Node* copyRandomList(Node* head) {if(head==nullptr){return nullptr;}unordered_map<Node*,Node*>map;Node *newhead = new Node (head->val);map[head] = newhead;Node *pre = newhead;for (auto it = head->next;it!=nullptr;it = it->next){Node *cur = new Node(it->val);map[it] = cur;pre->next = cur;pre = cur;}for (auto it = head;it!=nullptr;it = it->next){map[it]->random = map[it->random];}return newhead;} };

總結

以上是生活随笔為你收集整理的LeetCode 138 复制带随机指针的链表-中等的全部內容,希望文章能夠幫你解決所遇到的問題。

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