C语言 | Leetcode C语言题解之第133题克隆图

题目:

题解:

struct Node** visited;
int* state;  //数组存放结点状态 0:结点未创建 1:仅创建结点 2:结点已创建并已填入所有内容void bfs(struct Node* s) {if (visited[s->val] && state[s->val] == 2) {return;}struct Node* neighbor;if (visited[s->val]) {neighbor = visited[s->val];neighbor->val = s->val;neighbor->numNeighbors = s->numNeighbors;neighbor->neighbors = (struct Node**)malloc(sizeof(struct Node*) * neighbor->numNeighbors);} else {// 如果没有被访问过,就克隆并存储在哈希表中neighbor = (struct Node*)malloc(sizeof(struct Node));neighbor->val = s->val;neighbor->numNeighbors = s->numNeighbors;neighbor->neighbors = (struct Node**)malloc(sizeof(struct Node*) * neighbor->numNeighbors);visited[s->val] = neighbor;}for (int i = 0; i < neighbor->numNeighbors; i++) {if (visited[s->neighbors[i]->val]) {neighbor->neighbors[i] = visited[s->neighbors[i]->val];} else {visited[s->neighbors[i]->val] = (struct Node*)malloc(sizeof(struct Node));state[s->neighbors[i]->val] = 1;neighbor->neighbors[i] = visited[s->neighbors[i]->val];}}state[neighbor->val] = 2;
}struct Node* cloneGraph(struct Node* s) {if (s == NULL) {return NULL;}// 将题目给定的节点添加到队列struct Node *QUEUE[101], *p;int head = -1, eneighbor = -1, i, flag[101];visited = (struct Node**)malloc(sizeof(struct Node*) * 101);memset(visited, 0, sizeof(struct Node*) * 101);state = (int*)malloc(sizeof(int) * 101);memset(state, 0, sizeof(int) * 101);memset(flag, 0, sizeof(int) * 101);// 克隆第一个节点并存储到哈希表中QUEUE[++eneighbor] = s;// 广度优先搜索while (head != eneighbor) {// 取出队列的头节点p = QUEUE[++head];// 遍历该节点的邻居bfs(p);for (i = 0; i < p->numNeighbors; i++) {if (!flag[p->neighbors[i]->val]) {// 将邻居节点加入队列中QUEUE[++eneighbor] = p->neighbors[i];flag[p->neighbors[i]->val] = 1;}}}return visited[s->val];
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片和PDF展示预览、并支持下载

需求 展示图片和PDF类型&#xff0c;并且点击图片或者PDF可以预览 第一步&#xff1a;遍历所有的图片和PDF列表 <div v-for"(data,index) in parerFont(item.fileInfo)" :key"index" class"data-list-item"><downloadCard :file-inf…

【面试八股总结】锁:互斥锁、自旋锁、读写锁、乐观锁、悲观锁

使用加锁操作和解锁操作可以解决并发线程/进程的互斥问题。任何想进入临界区的线程&#xff0c;必须先执行加锁操作。若加锁操作顺利通过&#xff0c;则线程可进入临界区&#xff1b;在完成对临界资源的访问后再执行解锁操作&#xff0c;以释放该临界资源。 一、互斥锁与自旋锁…

【C语言】详解函数(下)(庖丁解牛版)

文章目录 1. 前言2. 数组做函数形参3. 函数嵌套调用和链式访问3.1 嵌套调用3.2 链式访问 1. 前言 详解C语言函数(上)的链接&#xff1a;http://t.csdnimg.cn/EGsfe 经过对函数的初步了解之后,相信大家已经对C语言标准库里的函数已经有初步的认知了&#xff0c;并且还学会了如…

Linux系统Docker部署Apache Superset并实现远程访问详细流程

目录 前言 1. 使用Docker部署Apache Superset 1.1 第一步安装docker 、docker compose 1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问 3. 设置固定连接公网地址 前言 作者简介&#xff1a; 懒大王敲代码&#xff0…

x86国产化麒麟系统上安装docker及问题解决

以前感觉安装docker没有问题&#xff0c;所以没有记录怎么安装的&#xff0c;最近在国产化系统上安装docker总是失败&#xff0c;经过仔细研究完全解决了该问题&#xff0c;特此记录。 参考链接&#xff1a; 在 OpenKylin 上安装 Docker 按照上面的链接可以知道整个docker安装…

浏览器工作原理

主要分为导航、获取数据、HTML解析、css解析、执行javaScript、渲染树几个步骤。 1.导航 DNS查询 DNS服务器类似于电话簿&#xff0c;里面包含公共的IP地址以及相关主机名数据库&#xff0c;我们输入一个域名&#xff0c;他能帮我们映射到对应的IP地址。&#xff08;第一次查…

Latex之图片排列的简单使用(以MiKTeX工具为例)

一、参考资料 Latex如何插入图片 Latex 学术撰写工具推荐&#xff08;在线、Windows、Mac、Linux&#xff09; 关于Latex并排多张图片及加入图片说明的方法 二、准备工作 1. 在线LaTex工具 Overleaf 2. 本地LaTex工具 MiKTeX 3. 测试用例 \documentclass{article} \ti…

题号:BC19 题目:反向输出一个四位数

题号&#xff1a;BC19 题目&#xff1a;反向输出一个四位数 废话不多说&#xff0c;上题目&#xff1a; 解题思路&#xff1a; 我们发现可以用%和/两个操作符就可以解决。 代码如下: int main() {int a 0;scanf("%d ",& a);while (a){printf("%d "…

Python Django 5 Web应用开发实战

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

【PB案例学习笔记】-17制作一个颜色选择框

写在前面 这是PB案例学习笔记系列文章的第17篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

解决找不到api-ms-win-crt-runtime-l1-1-0.dll问题的5种方法

电脑已经成为我们生活和工作中不可或缺的工具&#xff0c;然而&#xff0c;由于各种原因&#xff0c;我们可能会遇到一些常见的问题&#xff0c;其中之一就是电脑缺失api-ms-win-crt-runtime-l1-1-0.dll文件。这个问题可能会导致电脑出现错误提示、程序无法正常运行等困扰。为了…

easyexcel模板填充列表

引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency>编写模板 编写代码 public class FillData {private String name;private Double number;pu…

python数据分析——模型诊断

参考资料&#xff1a;活用pandas库 创建模型是持续性活动。当向模型中添加或删除变量时&#xff0c;需要设法比较模型&#xff0c;并需要统一的方法衡量模型的性能。 1、残差 模型的残差指实际观测值与模型估计值之差。 # 导入pandas库 import pandas as pd # 读取数据集 hou…

[next.js]pwa缓存

配置Next.js (v14 App Router模式) 使其支持PWA缓存&#xff0c;配置server worker和mainfest.json&#xff0c;让项目支持离线访问和可安装。 安装依赖next-pwa npm i next-pwa配置next.config.js const path require(path);const withPWAInit require(next-pwa);// 判断…

Nodejs 第七十四章(微服务)

什么是微服务&#xff1f; micro servers 微服务和微前端是类似的&#xff0c;微前端就是借鉴了微服务的理念去实现的&#xff0c;那么微服务指的就是&#xff0c;将应用程序拆分成为一系列小型、独立的服务&#xff0c;每个服务都是专注于执行特定的业务&#xff0c;比如文章…

微软云计算[3]之Windows Azure AppFabric

Windows Azure AppFabric AppFabric概述AppFabric关键技术服务总线访问控制高速缓存 AppFabric概述 AppFabric为本地应用和云中应用提供了分布式的基础架构服务 用户本地应用与云应用之间进行安全联接和信息传递 云应用和现有应用或服务之间的连接及跨语言、跨平台、跨不同标…

13- Redis 中的 压缩列表 数据结构

压缩列表的最大特点&#xff0c;就是它被设计成一种内存紧凑型的数据结构&#xff0c;占用 一块连续的内存空间&#xff0c;不仅可以利用 CPU 缓存&#xff0c;而且会针对不同长度的数据&#xff0c;进行相应编码&#xff0c;这种方法可以有效的节省内存开销。 但是&#xff0…

C#开源实用的工具类库,集成超过1000多种扩展方法

前言 今天大姚给大家分享一个C#开源&#xff08;MIT License&#xff09;、免费、实用且强大的工具类库&#xff0c;集成超过1000多种扩展方法增强 .NET Framework 和 .NET Core的使用效率&#xff1a;Z.ExtensionMethods。 直接项目引入类库使用 在你的对应项目中NuGet包管…

【办公类-04-02】华为助手导出照片读取拍摄时间分类导出,视频不行)

背景需求 今天我用QQ相册导出照片&#xff0c;但是始终在转圈&#xff0c;手机上无法跳出“连结“”的提示&#xff0c;换了台式和笔记本都无法传输。&#xff08;明明5月14日还可以导出的&#xff09; 最后我只能用华为传输助手&#xff0c;把照片快速提取出来了。 使用原来…

模式识别涉及的常用算法

一、线性回归 1.算法执行流程&#xff1a; 算法的执行流程可以简述如下&#xff1a; 导入必要的库&#xff1a; 导入NumPy库&#xff0c;用于数值计算。导入Matplotlib库&#xff0c;用于数据可视化。导入Pandas库&#xff0c;用于数据处理&#xff08;尽管在这个例子中&#…