题目链接:
https://leetcode-cn.com/problems/clone-graph/
这题主要就是考察对领接表的理解难度其实不大,
这里主要是学习到了两个STL
一个是
unordered_map
相对于map 这个主要是内部是哈希表实现查找速度快于map。
emplace_back
相对于push_back只会直接构造一次对象不会创建临时对象
class Solution {
public:
Node* cloneGraph(Node* node) {
if(node == nullptr)return node;
unordered_map<Node *,Node *>unmap;
queue<Node *>que;
que.push(node);
Node *p;
unmap[node] = new Node(node->val);
while(!que.empty())
{
p = que.front();
que.pop();
for(int i = 0;i<p->neighbors.size();i++)
{
if(unmap.find(p->neighbors[i]) == unmap.end())
{
unmap[p->neighbors[i]] = new Node(p->neighbors[i]->val);
que.push(p->neighbors[i]);
}
unmap[p]->neighbors.emplace_back(unmap[p->neighbors[i]]);
}
}
return unmap[node];
}
};