克隆图

LeetCode-133

  • 使用一个map来存储已经遍历的结点,这个存起来的结点必须是新new的才符合题意
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> neighbors; public Node() {
val = 0;
neighbors = new ArrayList<Node>();
} public Node(int _val) {
val = _val;
neighbors = new ArrayList<Node>();
} public Node(int _val, ArrayList<Node> _neighbors) {
val = _val;
neighbors = _neighbors;
}
}
*/
class Solution {
boolean[] flag;
HashMap<Integer,Node>hashmap=new HashMap<>();
public Node dfs(Node node){
Node nows=new Node();
nows.val=node.val;
hashmap.put(node.val,nows);
List<Node> list=node.neighbors;
ArrayList<Node> newlist=new ArrayList<>();
for(Node temp:list){
Node now;
if(!flag[temp.val]){
flag[temp.val]=true;
now=dfs(temp);
}else {
now=hashmap.get(temp.val);
}
newlist.add(now);
}
nows.neighbors=newlist;
return nows;
}
public Node cloneGraph(Node node) {
flag=new boolean[110];
Arrays.fill(flag,false);
if(node==null)
return null;
flag[node.val]=true;
return dfs(node);
}
}

最新文章

  1. D3.js 学习( 一)
  2. JS数字键盘
  3. Java TCP 程序
  4. to_char 详解
  5. PayPal 高级工程总监:读完这 100 篇文献,就能成大数据高手
  6. 如何使用highmaps制作中国地图
  7. 【转】vim - tab变空格
  8. div 并排
  9. 在mipsel-linux平台上的编译应用SQLite-3.5.9
  10. JS(三)
  11. 利用libevent的timer实现定时器interval
  12. Java对象序列化/反序列化的注意事项(转)
  13. Arduino 各种模块篇 粉尘传感器 dust sensor 空气质量检测
  14. class-提升方法Boosting
  15. 备份LeetCode OJ自己编写的代码
  16. java运行时could not open ........jvm.cfg问题的解决
  17. 第十八章 dubbo-monitor计数监控
  18. InstallShield: 1628 完成基于脚本的安装失败
  19. 温故而知新 前端日志上传新姿势 navigator.sendBeacon(信标)
  20. 在taro中跳转页面的时候执行两遍componentDidMount周期的原因和解决方法

热门文章

  1. 【noi 2.6_9272】偶数个数字3(DP)
  2. URAL - 1635 哈希区间(或者不哈希)+dp
  3. Django用户注册、登录
  4. DNS域名解析10步
  5. Java 对象的哈希值是每次 hashCode() 方法调用重计算么?
  6. Github markdown页面内跳转
  7. h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated
  8. es6 curry function
  9. chroot vs docker
  10. vuex &amp; redux