day61(1.20)——leetcode面试经典150

133. 克隆图

133.克隆图

题目:

题解:

java 复制代码
/*
// 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 {
    private HashMap<Node, Node> map = new HashMap<>();
    public Node cloneGraph(Node node) {
        if(node == null){
            return null;
        }

        if(map.containsKey(node)) {
            return map.get(node);
        }

        //创建新节点
        Node clone = new Node(node.val);
        //进行映射
        map.put(node, clone);

        //递归所有邻居
        for(Node neighbor : node.neighbors) {
            clone.neighbors.add(cloneGraph(neighbor));
        }
        
        //返回clone
        return clone;

    }
}
相关推荐
kyriewen1 天前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
Revolution611 天前
React 组件重新渲染时,到底重新执行了什么
前端·react.js·面试
Revolution611 天前
第一次运行 Node.js:终端里的 JavaScript 怎样执行
后端·面试·node.js
进击的程序猿~1 天前
Go 并发底层原理面试学习指南
开发语言·面试·golang
wdfk_prog2 天前
嵌入式面试真题学习笔记系列
笔记·学习·面试
用户2873555325922 天前
OpenResty 中 Lua 脚本实战示例(分场景讲清 Lua 解决了 Nginx 原生做不到的事)
面试
帅次2 天前
Android 应用高级面试:Window 近1年高频追问 18 题
android·面试·职场和发展
Revolution612 天前
Node.js 是什么:前端项目里哪些事情由它完成
前端·面试·node.js
Hi李耶2 天前
【LeetCode】9-回文数
算法·leetcode·职场和发展