LeetCode 133. Clone Graph

Solution1:
DFS/记忆化递归,参考网址:http://www.cnblogs.com/grandyang/p/4267628.html
真是一道记忆化递归的好题啊~

/*** Definition for undirected graph.* struct UndirectedGraphNode {*     int label;*     vector<UndirectedGraphNode *> neighbors;*     UndirectedGraphNode(int x) : label(x) {};* };*/
class Solution {
public:UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {unordered_map<int, UndirectedGraphNode*> umap;return clone(node, umap);}private:UndirectedGraphNode *clone(UndirectedGraphNode *node, unordered_map<int, UndirectedGraphNode*> &umap) {if (!node) return node;//是针对node == NULL的情况的if (umap.count(node->label)) return umap[node->label];UndirectedGraphNode *newNode = new UndirectedGraphNode(node->label);umap[node->label] = newNode;for (int i = 0; i < node->neighbors.size(); ++i) {(newNode->neighbors).push_back(clone(node->neighbors[i], umap));}return newNode;}
};

Solution2:
BFS,先记录一下自己的错代码。。。
参考网址:https://blog.csdn.net/windylai123/article/details/78134293

/*** Definition for undirected graph.* struct UndirectedGraphNode {*     int label;*     vector<UndirectedGraphNode *> neighbors;*     UndirectedGraphNode(int x) : label(x) {};* };*/
class Solution { //记忆化的BFS
public:UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {if (!node) return NULL;原图和新图节点一一对应unordered_map<UndirectedGraphNode *, UndirectedGraphNode *> node_map;UndirectedGraphNode *clone_node = new UndirectedGraphNode(node->label);//首先克隆第一个结点node_map[node] = clone_node; 建立map对应//建一个队列,把头结点push进去queue<UndirectedGraphNode *> node_queue;node_queue.push(node);while (!node_queue.empty()) {UndirectedGraphNode *begin = node_queue.front();node_queue.pop();vector<UndirectedGraphNode *> temp = begin->neighbors;for (int i = 0; i < temp.size(); i++) {/*如果当前节点不在map里,则要生成新节点并放入队列*/ if (!node_map.count(temp[i])) {UndirectedGraphNode * temp_node = new UndirectedGraphNode(temp[i]->label);node_map[temp[i]] = temp_node;node_queue.push(temp[i]);}//生成当前节点的邻接节点node_map[begin]->neighbors.push_back(node_map[temp[i]]);}}return clone_node;}
};

【重点!DFS/记忆化递归 + BFS】LeetCode 133. Clone Graph相关推荐

  1. 【DFS + 记忆化递归】LeetCode 140. Word Break II

    LeetCode 140. Word Break II Solution1:我的答案 纯DFS,在第31个case时超时,还是记录一下.. class Solution { // DFS public ...

  2. 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways

    LeetCode 91. Decode Ways Solution1:我的答案 还是记录一下,最容易想到的是DFS,但是在第223/238个case上就超时了... class Solution { ...

  3. 【重点!记忆化递归+DP】LeetCode 72. Edit Distance

    LeetCode 72. Edit Distance 参考链接:https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-72-edit ...

  4. LeetCode 329. 矩阵中的最长递增路径(记忆化递归)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 拓扑排序 1. 题目 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向 ...

  5. LeetCode 514. 自由之路(记忆化递归 / DP)

    文章目录 1. 题目 2. 解题 1. 题目 电子游戏"辐射4"中,任务"通向自由"要求玩家到达名为"Freedom Trail Ring" ...

  6. LeetCode 87. 扰乱字符串(记忆化递归 / DP)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 动态规划 1. 题目 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树. 下图是字符串 s1 = &q ...

  7. LeetCode 337. 打家劫舍 III(记忆化+递归)

    文章目录 1. 题目 1.1 相关题目: 2. 解题 2.1 递归 2.2 记忆化递归 1. 题目 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称 ...

  8. dfs记忆化搜索(带限制的选择问题) 讲解:LeetCode打家劫舍||| / 蓝桥 地宫取宝/蓝桥 k进制数//剪格子//方格分割

    记忆化递归的必要性: 普通的递归可能会重复求解某一值,类似斐波那契数列.同样的子问题可能会被求解多次,这样就会很慢很慢很慢 解决方法:我们把历史求解(子问题)记录下来,如果下次需要求解子问题,那么直接 ...

  9. 【记忆化递归+DP】LeetCode 139. Word Break

    LeetCode 139. Word Break Solution1: 记忆化递归的典型套路题 参考网址:https://zxi.mytechroad.com/blog/leetcode/leetco ...

最新文章

  1. hpgen9服务器f10没显示,hp gen9服务器设置
  2. .NETCore_生成实体
  3. cloudstack+ceph中解决ceph单点问题
  4. 信息学奥赛一本通 1032:大象喝水 | OpenJudge NOI 1.3 14
  5. ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下)
  6. CV《神经风格转换》
  7. 十大骨传导耳机品牌,骨传导耳机品牌推荐
  8. html读取fbx文件,读取Fbx文件中的信息.doc
  9. 2000坐标系xy坐标几位_2000国家大地坐标系
  10. 再追哥德尔开篇---哥德尔逻辑与哲学之一
  11. C语言结构体字节对齐规则
  12. 010 editor如何复制16进制
  13. 微信公众号考试成绩查分系统
  14. ORA-01652(永久表空间临时段不能扩展情况分析)
  15. HTML超好看樱花飘落404页面源码+带时间
  16. python变成exe1023无标题_GitHub - Qing1023/Python-100-Days: Python - 100天从新手到大师
  17. BIT-MiniCC——parser(lab5语法分析器)
  18. 关于Linux的介绍与安装
  19. 模仿QQ的左右滑动切换界面和下拉更新的效果
  20. jmeter原件使用

热门文章

  1. VM安装rhel或linux后,声音很响,如何关闭
  2. java中action类是干嘛的_java中action的作用
  3. java执行内存_java运行时内存
  4. html全局事件,HTML5全局属性和事件
  5. 修改cas5成功html文件,手把手教Apereo CAS5.2.3 Server端 增量开发 自定义登录页,增加验证码,注册,修改密码等功能的方式...
  6. csr 蓝牙驱动_双11来临之际,推荐几款无线蓝牙耳机吧
  7. 斐波那契java编写_请编写一个Java程序的斐波那契数
  8. linuxcnc 多轴联动_科学网—【LinuxCNC】开源机床Linux操作系统 - 刘洋的博文
  9. 怎么用wifi进e站_忘记wifi密码怎么办,用这招可以知道电脑中的wifi密码
  10. github ssh 配置_搭建自己的技术博客系列 2:把 Hexo 博客部署到 GitHub 上