华为OD机试真题 JavaScript 实现【Linux 发行版的数量】【2023Q1 100分】

news2024/11/17 23:57:21

在这里插入图片描述

一、题目描述

Linux 操作系统有多个发行版,distrowatch.com 提供了各个发行版的资料。这些发行版互相存在关联,例如 Ubuntu 基于 Debian 只开发而 Mint 又基于 Ubuntu 开发,那么我们认为 Mint 同 Debian 也存在关联。

发行版集是一个或多个相关存在关联的操作系统发行版,集合内不包含没有关联的发行版给你一个 n*n 的矩阵 isConnected,其中 isComnected[i][j] = 1 表示第 i 发行版和第 j 个发行版直接关联,而 isConnected[i][j] =0 表者不直接相连。

返回最大的发行版集中发行版的数量。

二、输入描述

第一行输入发行版的总数量 N,之后每行表示各发行版间是否直接相关。

三、输出描述

输出最大的发行版集中发行版的数量。

四、解题思路

  1. 读取输入的发行版数量 N;
  2. 创建一个二维数组 arr,用于存储发行版之间的关联关系;数组的大小为 N * N;
  3. 遍历输入,将关联关系存储到数组 arr 中;
  4. 创建一个临时集合 temp,用于记录已经添加过的发行版;
  5. 初始化变量 max 为 0,用于记录最大发行版集的数量;
  6. 对于每个发行版,依次进行以下操作:
    • 如果该发行版未被添加到 temp 中,表示它属于一个新的发行版集;
    • 创建一个空的集合 set,用于存储当前发行版集的所有相关发行版;
    • 通过递归调用 add 方法,将当前发行版及其关联的发行版添加到集合 set 中;
    • 更新 max 的值为当前发行版集的大小;
    • 将集合 set 中的发行版添加到 temp 中,表示它们已经被处理过;
  7. 输出最大发行版集的数量 max;

五、JavaScript算法源码

function calculate(N, isConnected) {
    const arr = [...isConnected];

    const temp = new Set();
    let max = 0;
    for (let i = 0; i < N; i++) {
        if (!temp.has(i)) {
            const set = new Set();
            add(i, set, arr);
            max = Math.max(max, set.size);
            temp.add(...set);
        }
    }

    return max;
}

function add(linux, set, arr) {
    for (let i = linux; i < arr.length; i++) {
        if (!set.has(i) && arr[linux][i] === 1) {
            set.add(i);
            add(i, set, arr);
        }
    }
}

感谢刷题群小伙伴提供的简化算法。

function findMaxDistroSet(N, isConnected) {
  const visited = new Set();
  let max = 0;

  function dfs(node) {
    visited.add(node);
    max++;
    for (let i = 0; i < N; i++) {
      if (isConnected[node][i] === 1 && !visited.has(i)) {
        dfs(i);
      }
    }
  }

  for (let i = 0; i < N; i++) {
    if (!visited.has(i)) {
      dfs(i);
    }
  }

  return max;
}

六、效果展示

1、输入

4
1 1 0 0
1 1 1 0
0 1 1 0
0 0 0 1

2、输出

3

3、说明

Debian(1)和Unbuntu(2)相关,Mint(3)和Ubuntu(2)相关,EeulerOS(4)和另外三个都不相关,所以存在两个发行版集,发行版集中发行版的数量分别是3和1,所以输出3。


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

openEuler 开源汇智赢未来|2023开放原子全球开源峰会 openEuler 论坛成功召开

2023年6月12日&#xff0c;开放原子全球开源峰会OpenAtom openEuler论坛成功召开。论坛以“openEuler汇众智&#xff0c;奔涌向前赢未来”为主题&#xff0c;众多openEuler社区成员、重磅开发者用户以及技术专家参与本次论坛。论坛充分展示了openEuler 社区的最新成果&#xff…

LabVIEW开发呼吸分析系统

LabVIEW开发呼吸分析系统 在日常生活中&#xff0c;许多人都在练习调息法&#xff0c;但大多数人都不知道如何以完美的方式做。不当的做法不会带来适当的结果。一种使用LabVIEW分析呼吸信号的方法&#xff0c;以使人们以完美的方式练习调息。这有助于从业者按照系统指定的说明…

Linux 用yum安装软件提示 cannot find a valid baseurl for repo:base/7/x86_64 的解决方法

文章目录 一、问题原因二、处理方案&#xff1a;1. 编辑修改网卡配置文件2. 在文件末尾&#xff08;或中间&#xff09;追加DNS3. 重启网络4. 验证&#xff0c;安装想要安装的软件 一、问题原因 如下&#xff1a; 出现这个问题是因为yum在安装包的过程中&#xff0c;虽然已经联…

【NOR闪存】MT25TL256BBA8ESF-0AAT 256Mbit、MT25TL01GBBB8ESF-0AAT 1Gbit 16-SOP

器件说明&#xff1a; Micron串行NOR闪存可满足消费电子、工业、有线通信以及计算应用的需求。这些器件采用行业标准封装、引脚分配、命令集和芯片组兼容性&#xff0c;易于为各类设计所采用。这样可节省宝贵的开发时间&#xff0c;同时确保与现有和未来设计的兼容性。 这些串…

超越科幻:揭秘马斯克公司在AI、机器人、脑机接口和太空探索领域的重大突破

原创 | 文 BFT机器人 得益于特斯拉股价暴涨&#xff0c;马斯克今年财富增长超过553亿美元。 根据彭博亿万富翁指数&#xff0c;马斯克目前的净资产约为1923亿美元&#xff0c;超过前世界首富Bernard Arnault的1866亿美元&#xff0c;重回世界首富。 马斯克一直以来都是科技领域…

【JavaWeb】使用Servlet实现输出 hello world

文章目录 1. 前言2. 重写doGet方法3. Smart Tomcat的下载和使用4. 访问时出现问题 1. 前言 之前讲过如何使用IDEA创建Servlet项目. 因此创建项目这一步就不过多介绍了 有需要的可以看一下➡IDEA专业版和社区版创建Servlet项目 今天介绍如何使用Servlet输出一个"hello wo…

深度学习-小目标检测训练技巧

强烈感谢 公众号CVHub 提供的文章思路&#xff0c;该文章仅作为学习记录。 导读 小目标检测是计算机视觉领域中的一个极具挑战性的问题。随着深度学习和计算机视觉领域的不断发展&#xff0c;越来越多的应用场景需要对小目标进行准确的检测和识别。本文将从小目标的定义、意义…

被抄袭声明

我&#xff08;受害者&#xff09;的博客主页&#xff1a; ChuckieZhu的博客_CSDN博客-MATLAB,Python,Django领域博主 抄袭者&#xff08;施害者&#xff09;博客主页&#xff1a; 洋洋菜鸟的博客_CSDN博客-python实例,数学建模,python基础领域博主 问题说明&#xff1a; …

优思学院|什么是六西格玛?一文解答你对六西格玛最常见的疑问

什么是六西格玛&#xff1f; 六西格玛&#xff08;Six Sigma&#xff09;是一种管理方法和质量改进体系&#xff0c;旨在减少组织过程中的变异性&#xff0c;提高业务绩效&#xff0c;并实现客户满意度的持续提升。它是由美国Motorola公司在20世纪80年代发展起来的&#xff0c…

公司新来了个测试开发,据说是00后,上来一顿操作给我惊呆了.....

开年公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍!给公司…

Roxel 创世 NFT 作品集

Roxel 宇宙中的 Roxel 机器人、复古未来主义设备和生动机器的集合。在 Roxel 游戏的第一关「The Ascension」中&#xff0c;与它们一起玩耍或对抗&#xff0c;解锁访问独家内容。 该系列于北京时间 6 月 5 日晚上 11 点在 The Sandbox 市场平台上线。 作品一览 巨大的机械挖掘机…

QT学习之旅 - 自定义控件

文章目录 QT中horizontalLayout组件中调整长度在其他组件中使用自定义控件关于ComboBox控件关于QStringList ico添加失败获取windows端口号pro文件(添加)cpp文件(添加) 关于表格设置背景布(ui界面)设置网格.h文件 我们选择 widget 以上是选QT Froms的模板 我们可以选择QT设计师…

基于html+css的图展示124

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Python 基于招聘数据可视化界面

1 简介 随着国内的经济不断的快速发展&#xff0c;现在学生的就业压力也在逐年增加&#xff0c;网络上的招聘信息非常的丰富&#xff0c;但是对于学生而言岗位是否适合&#xff0c;自身技能是否满足企业需要等仍然需要进一步的进行研究。本次的开发就是帮助应届毕业生在选择工…

012 - STM32学习笔记 - DMA_存储器到存储器

011 - STM32学习笔记 - DMA直接存储器 1、DMA简介 我们知道stm32在实际应用过程中具有很强大的功能&#xff0c;包含数据的采集、处理、逻辑功能的运算等&#xff0c;因此stm32一直在处理大量的事务&#xff0c;但是在实际使用过程中&#xff0c;我们知道有些事情实际上不需要…

探索智慧文旅:沉浸式VR导览与个性化数字人带你畅游景区

导语&#xff1a; 随着科技的不断进步和智能化的兴起&#xff0c;智慧文旅已经成为旅游业的新趋势。在这个数字化时代&#xff0c;旅游体验已经不再局限于传统的观光和游玩&#xff0c;而是通过创新科技为游客提供了全新的旅行方式和更加丰富的体验。 在智慧文旅中&#xff0c…

Pycharm配置远程调试

原文链接 在搞深度学习的时候&#xff0c;我们在本地开发&#xff0c;但是需要在服务器去运行工程&#xff0c;所以需要使用Pycharm进行远程配置&#xff0c;可以实现本地代码自动同步到服务器&#xff0c;并在本地使用服务器的解释器。 条件&#xff1a;需要使用专业版Pycha…

【webrtc】SDP: rtcp-mux

https://w3c.github.io/webrtc-pc/ RTCRtcpMuxPolicy 是关于传输rtcp包的ice地址收集的 默认是必须开启的。 rtcpMuxPolicy of type RTCRtcpMuxPolicy, defaulting to “require”. Indicates which rtcp-mux policy to use when gathering ICE candidates.

ESXi 7.0 U3m Cisco (思科) 定制版 OEM Custom Installer CD

VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer CDs) ESXi 7.0 U3m Standard (标准版) ESXi 7.0 U3m Dell (戴尔) 定制版 OEM Custom Installer CD ESXi 7.0 U3m HPE (慧与) 定制版 OEM Custom Installer CD ESXi 7.0 U3m Lenovo (联想) 定…

centos7安装 Miniconda

Miniconda是什么 Miniconda是一个轻量级的Anaconda发行版&#xff0c;它是一个Python环境管理器和软件包管理器。Anaconda是一个科学计算和数据科学的Python发行版&#xff0c;而Miniconda是Anaconda的精简版本&#xff0c;只包含了基本的组件。 按照以下步骤下载和安装Minicon…