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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

133. Clone Graph

發(fā)布時(shí)間:2023/12/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 133. Clone Graph 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎fork and star:Nowcoder-Repository-github

133. Clone Graph

題目

Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.OJ's undirected graph serialization:Nodes are labeled uniquely. We use # as a separator for each node, and , as a separator for node label and each neighbor of the node.As an example, consider the serialized graph {0,1,2#1,2#2,2}.The graph has a total of three nodes, and therefore contains three parts as separated by #.First node is labeled as 0. Connect node 0 to both nodes 1 and 2.Second node is labeled as 1. Connect node 1 to node 2.Third node is labeled as 2. Connect node 2 to node 2 (itself), thus forming a self-cycle.Visually, the graph looks like the following:1/ \/ \0 --- 2/ \\_/

解析

  • 考察圖的基本遍歷方法,DFS/BFS
  • 注意細(xì)節(jié)bug
  • 運(yùn)用unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> hash進(jìn)行圖的映射關(guān)系存儲(chǔ)
// clone graph class Solution_133 {// date 2017/12/29 10:01 // date 2017/12/29 11:04 public:UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> hash;if (!node){return node;}if (hash.find(node)!=hash.end()) //找到,關(guān)鍵字已經(jīng)訪問過{hash[node] = new UndirectedGraphNode(node->label);for (auto iter: node->neighbors){hash[node]->neighbors.push_back(cloneGraph(iter)); //遞歸DFS //超時(shí)}}return hash[node];}UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) //BFS{ if (!node){return node;} unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> hash;UndirectedGraphNode* head = new UndirectedGraphNode(node->label);hash[node] = head;queue<UndirectedGraphNode*> que;que.push(node); //que.push(head); bug 花費(fèi)1小時(shí)查找while (!que.empty()){UndirectedGraphNode* q = que.front();que.pop();for (auto iter: q->neighbors){if (!hash[iter]) //還沒有訪問{UndirectedGraphNode* temp = new UndirectedGraphNode(iter->label);hash[iter] = temp;que.push(iter);}hash[q]->neighbors.push_back(hash[iter]); //將一個(gè)節(jié)點(diǎn)的鄰接點(diǎn)關(guān)系記錄下來(lái)}}return hash[node];}};

題目來(lái)源

  • 133. Clone Graph

總結(jié)

以上是生活随笔為你收集整理的133. Clone Graph的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。