zoukankan      html  css  js  c++  java
  • 一 克隆图

    广搜

    133 Clone Graph

        public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
            if (node == null) return node;
            LinkedList<UndirectedGraphNode> queue = new LinkedList<>();
            HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<>();
            queue.offer(node);
            UndirectedGraphNode copy = new UndirectedGraphNode(node.label);
            map.put(node, copy);
            while (!queue.isEmpty()){
                UndirectedGraphNode cur = queue.poll();
                for (int i = 0; i < cur.neighbors.size(); i++){
                    if (!map.containsKey(cur.neighbors.get(i))){
                        copy = new UndirectedGraphNode(cur.neighbors.get(i).label);
                        map.put(cur.neighbors.get(i), copy);
                        queue.offer(cur.neighbors.get(i));
                    }
                    map.get(cur).neighbors.add(map.get(cur.neighbors.get(i)));
                }
            }
            return map.get(node);
        }
    View Code
        public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
            if (node == null) return node;
            LinkedList<UndirectedGraphNode> stack = new LinkedList<>();
            HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<>();
            stack.push(node);
            UndirectedGraphNode copy = new UndirectedGraphNode(node.label);
            map.put(node, copy);
            while (!stack.isEmpty()){
                UndirectedGraphNode cur = stack.poll();
                for (int i = 0; i < cur.neighbors.size(); i++){
                    if(!map.containsKey(cur.neighbors.get(i))){
                        copy = new UndirectedGraphNode(cur.neighbors.get(i).label);
                        map.put(cur.neighbors.get(i), copy);
                        stack.push(cur.neighbors.get(i));
                    }
                    map.get(cur).neighbors.add(map.get(cur.neighbors.get(i)));  
                }
                
            }
            return map.get(node);
        }
    View Code
        public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {  
            if(node == null)  
                return null;  
            HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<UndirectedGraphNode, UndirectedGraphNode>();  
            UndirectedGraphNode copy = new UndirectedGraphNode(node.label);  
            map.put(node,copy);  
            helper(node,map);  
            return copy;  
        }  
        private void helper(UndirectedGraphNode node, HashMap<UndirectedGraphNode, UndirectedGraphNode> map)  
        {  
            for(int i=0;i<node.neighbors.size();i++)  
            {   
                UndirectedGraphNode cur = node.neighbors.get(i);  
                if(!map.containsKey(cur))  
                {  
                    UndirectedGraphNode copy = new UndirectedGraphNode(cur.label);  
                    map.put(cur,copy);  
                    helper(cur,map);  
                }  
                map.get(node).neighbors.add(map.get(cur));  
            }  
        }  
    View Code
  • 相关阅读:
    python定时任务:apscheduler的使用(还有一个celery~)
    Python定时任务-schedule vs. Celery vs. APScheduler
    结合Django+celery二次开发定时周期任务
    The Django Book 2.0--中文版
    第十二章: 部署Django
    Django扩展自定义manage命令
    使用django-extension扩展django的manage――runscript命令
    Django | 执行项目下指定的脚本
    C语言宏定义技巧——多次包括头文件内容不同
    《Java并发编程实战》第十章 避免活跃性危急 读书笔记
  • 原文地址:https://www.cnblogs.com/whesuanfa/p/7007843.html
Copyright © 2011-2022 走看看