OJ练习第151题——克隆图

news2025/1/20 12:13:41

克隆图

力扣链接:133. 克隆图

题目描述

给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。

示例

在这里插入图片描述

分析

对于一张图而言,它的深拷贝即构建一张与原图结构,值均一样的图,但是其中的节点不再是原来图节点的引用。因此,为了深拷贝出整张图,我们需要知道整张图的结构以及对应节点的值。

由于题目只给了我们一个节点的引用,因此为了知道整张图的结构以及对应节点的值,我们需要从给定的节点出发,进行「图的遍历」,并在遍历的过程中完成图的深拷贝。

为了防止多次遍历同一个节点,陷入死循环,我们需要用一种数据结构记录已经被克隆过的节点。

深度优先搜索


class Solution {
    private HashMap<Node, Node> visited = new HashMap<>();
    public Node cloneGraph(Node node) {
        if(node == null) return node;
        if(visited.containsKey(node)) return visited.get(node);
        Node cloneNode = new Node(node.val, new ArrayList());
        visited.put(node, cloneNode);
        for(Node neighbor : node.neighbors) {
            cloneNode.neighbors.add(cloneGraph(neighbor));
        }
        return cloneNode;
    }
}

广度优先搜索

class Solution {
    public Node cloneGraph(Node node) {
        if(node == null) return node;
        HashMap<Node, Node> visited = new HashMap<>();
        LinkedList<Node> queue = new LinkedList<Node>();
        queue.add(node);
        visited.put(node, new Node(node.val, new ArrayList()));
        while(!queue.isEmpty()) {
            Node n = queue.remove();
            for(Node neighbor : n.neighbors) {
                if(!visited.containsKey(neighbor)) {
                    visited.put(neighbor, new Node(neighbor.val, new ArrayList()));
                    queue.add(neighbor);
                }
                visited.get(n).neighbors.add(visited.get(neighbor));
            }
        }
        return visited.get(node);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/895700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

光伏发电系统的并网接入点选择及接入方案

1.并网方式及接入点选择 (1))并网点与接入点定义 1)并网点。对于有升压站的分布式电源&#xff0c;并网点为分布式电源升压站中压侧母线或节点&#xff0c;对于无升压站的分布式电源&#xff0c;并网点为分布式电源的输出汇总点。图1中所示A1、B1点分别为分布式电源A、B的并网…

工业视觉相机镜头选型方法

一、相机选型 1、首先&#xff0c;根据检测需求确定选用黑白/彩色、面阵/线阵相机&#xff0c;接口类型一般选择GigE 2、确定检测精度要求&#xff08;最小特征尺寸mm&#xff09;、视野范围&#xff0c;一个测量精度对应几个像素数&#xff08;一般取3-5&#xff09; 3、计…

【山河送书第七期】:《强化学习:原理与Python实战》揭秘大模型核心技术RLHF!

《强化学习&#xff1a;原理与Python实战》揭秘大模型核心技术RLHF&#xff01; 一图书简介二RLHF是什么&#xff1f;三RLHF适用于哪些任务&#xff1f;四RLHF和其他构造奖励模型的方法相比有何优劣&#xff1f;五什么样的人类反馈才是好反馈&#xff1f;六如何减小人类反馈带来…

Matplotlib数据可视化(四)

1.在绘图中显示公式 在Matplotlib中可以使用LaTex的命令来编辑公式&#xff0c;只需要在字符串前面加一个r即可。 示例1&#xff1a; import numpy as np import matplotlib.pyplot as plt plt.xlim([1,4]) plt.ylim([1,3]) plt.text(2,2,r$ \alpha \beta \pi \lambda \omeg…

新榜 | CityWalk本地生活商业价值洞察报告

如果说现在有人问&#xff0c;最新的网络热词是什么? “CityWalk”&#xff0c;这可能是大多数人的答案。 近段时间&#xff0c;“CityWalk”刷屏了各种社交媒体&#xff0c;给网友们带来了一场“城市漫步”之旅。 脱离群体狂欢&#xff0c;这个在社交媒体引发热议的词汇背后又…

【leetcode】232. 用栈实现队列

1.使用两个栈结构构建队列 我们需要自定义栈及其相关操作 栈结构遵循后入先出的原则&#xff0c;队列结构遵循先入先出的原则 构建具有两个栈结构的队列&#xff0c;栈pushST用于数据的插入&#xff0c;栈popST用于数据的删除 为栈结构动态开辟空间并初始化栈结构 //定义一个具…

object获取的两种方式/Object.keys使用/解构赋值

object获取的两种方式&#xff1a; data() {return {abj: {aa: {A: 1}}}},created() {console.log(this.abj.aa) //第一种console.log(this.abj["aa"]) //第二种}, Object.keys使用/解构赋值&#xff1a; return {footList: [],abj: {aa: {A: 12,AA:22},bb: {…

macOS系统安装python3

官网下载 官网&#xff1a;https://www.python.org/ 选择最新版本下载 双击安装包 点击继续 点击继续 点击同意 点击安装 终端执行 python3 --version

九、Linux下,如何在命令行进入文本编辑页面?

1、文本编辑基础 说到文本编辑页面&#xff0c;那就必须提到vi和vim&#xff0c;两者都是Linux系统中&#xff0c;常用的文本编辑器 2、三种工作模式 3、使用方法 &#xff08;1&#xff09;在进入Linux系统&#xff0c;在输入vim text.txt之后&#xff0c;会进入文本编辑中&…

【JS】for 与 forEach 分别如何跳出循环

for 循环 在 for 循环中&#xff0c;退出循环的两种方式&#xff1a; break; 退出整个循环continue; 退出当次循环 let array [1, 2, 3, 4, 5, 6, 7, 8, 9]; for (let i 0; i < array.length; i) {if (array[i] 6) {// break; // 退出整改循环&#xff0c;continue; /…

高并发内存池(centralcache)[2]

Central cache threadcache是每个线程独享&#xff0c;而centralcache是多线程共享&#xff0c;需要加锁&#xff08;桶锁&#xff09;一个桶一个锁 解决外碎片问题&#xff1a;内碎片&#xff1a;申请大小超过实际大小&#xff1b;外碎片&#xff1a;空间碎片不连续&#x…

能耗分析在医院节能中的管理

摘要&#xff1a;医院作为特殊的公共建筑&#xff0c;能耗较大且逐年攀升&#xff0c;具有较大的节能潜力。结合天津市某医院的用能概况、智慧管理平台的建设和使用&#xff0c;对大量能耗数据进行了研究和分析&#xff0c;通过将能源管理系统、数据分析与节能工作相结合&#…

在Visual Studio中使用 //TODO注释

在软件开发过程中&#xff0c;注释是非常重要的&#xff0c;它们可以帮助开发者理解代码的功能和逻辑。​有时候我们只需要标记出一些临时性的、需要后续处理的代码片段。这时候&#xff0c;我们可以使用一种特殊的注释&#xff1a;//TODO注释。 //TODO注释是一种轻量级的注释…

【项目实践】基于LSTM的一维数据扩展与预测

基于LSTM的一维数据拟合扩展 一、引(fei)言(hua) 我在做Sri Lanka生态系统服务价值计算时&#xff0c;中间遇到了一点小问题。从世界粮农组织(FAO)上获得Sri Lanka主要农作物产量和价格数据时&#xff0c;其中的主要作物Sorghum仅有2001-2006年的数据&#xff0c;而Millet只有…

2011年下半年 软件设计师 上午试卷2

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

新宝马M5谍照曝光,侵略感十足,将与奥迪、梅赛德斯-AMG正面竞争

报道称&#xff0c;宝马即将推出全新一代M5&#xff0c;该车的谍照最近再次曝光。早先&#xff0c;宝马 M5 Touring 旅行汽车的赛道测试图片已经在网络上流传开来&#xff0c;预计该车将与奥迪的RS6 Avant和梅赛德斯-AMG E63 Estate展开正面竞争。 从最新曝光的照片来看&#x…

区块链碎碎念

现在的区块链早已过了跑马圈地的时代&#xff0c;现在还按照以前承接项目的方式做区块链只能是越来越艰难。经过几年的技术沉淀&#xff0c;做区块链项目的公司都已经没落的七七八八了。 区块链不是一个能够快速显现盈利能力的行业&#xff0c;相反这个行业目前的模式还是处于…

【Datawhale暑期实践第三期】用户新增预测挑战赛

文章目录 赛题背景赛事任务赛题数据集评价指标赛题思路Baseline导入包并读取数据特征工程决策树模型训练和预测保存预测文件 赛题名称&#xff1a;用户新增预测挑战赛 赛题类型&#xff1a;数据挖掘、二分类 赛题链接&#x1f447;&#xff1a; https://challenge.xfyun.cn/top…

[Machine Learning] decision tree 决策树

&#xff08;为了节约时间&#xff0c;后面关于机器学习和有关内容哦就是用中文进行书写了&#xff0c;如果有需要的话&#xff0c;我在目前手头项目交工以后&#xff0c;用英文重写一遍&#xff09; &#xff08;祝&#xff0c;本文同时用于比赛学习笔记和机器学习基础课程&a…