2023-10-31 LeetCode每日一题(每棵子树内缺失的最小基因值)

news2025/7/12 23:03:38

2023-10-31每日一题

一、题目编号

2003. 每棵子树内缺失的最小基因值

二、题目链接

点击跳转到题目位置

三、题目描述

有一棵根节点为 0 的 家族树 ,总共包含 n 个节点,节点编号为 0 到 n - 1 。给你一个下标从 0 开始的整数数组 parents ,其中 parents[i] 是节点 i 的父节点。由于节点 0 是 ,所以 parents[0] == -1 。

总共有 105 个基因值,每个基因值都用 闭区间 [1, 105] 中的一个整数表示。给你一个下标从 0 开始的整数数组 nums ,其中 nums[i] 是节点 i 的基因值,且基因值 互不相同

请你返回一个数组 ans ,长度为 n ,其中 ans[i] 是以节点 i 为根的子树内 缺失最小 基因值。

节点 x 为根的 子树 包含节点 x 和它所有的 后代 节点。
示例 1:
在这里插入图片描述

示例 2:
在这里插入图片描述

示例 3:
在这里插入图片描述
提示:

  • n == parents.length == nums.length
  • 2 <= n <= 105
  • 对于 i != 0 ,满足 0 <= parents[i] <= n - 1
  • parents[0] == -1
  • parents 表示一棵合法的树。
  • 1 <= nums[i] <= 105
  • nums[i] 互不相同。

四、解题代码

class Solution {
public:
    vector<int> smallestMissingValueSubtree(vector<int>& parents, vector<int>& nums) {
        int n = parents.size();
        vector<vector<int>> children(n);
        for (int i = 1; i < n; i++) {
            children[parents[i]].push_back(i);
        }

        unordered_set<int> geneSet;
        vector<int> visited(n, 0);
        function<void(int)> dfs = [&](int node) {
            if (visited[node]) {
                return;
            }
            visited[node] = 1;
            geneSet.insert(nums[node]);
            for (auto child : children[node]) {
                dfs(child);
            }
        };

        vector<int> res(n, 1);
        int iNode = 1, node = -1;
        for (int i = 0; i < n; i++) {
            if (nums[i] == 1) {
                node = i;
                break;
            }
        }
        while (node != -1) {
            dfs(node);
            while (geneSet.count(iNode)) {
                iNode++;
            }
            res[node] = iNode;
            node = parents[node];
        }
        return res;
    }
};

五、解题思路

(1) 深度优先搜索。

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

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

相关文章

Vue:实现输入vue组件名称,就可以从网页上加载出组件

作者:CSDN @ _乐多_ 本文记录了使用动态组件实现在网页上输入vue组件名称,就可以从网页上直接加载组件的功能的代码。 实现效果如下所示, 在许多Vue.js应用中,我们有大量的组件,但并不是每个组件都需要在应用初始化时加载。动态加载组件的好处包括: 减小初始加载时间:…

[已解决]Mysql想删掉一个表里所有的数据,直接删总是卡住

问题 产生"假锁" Mysql想删掉一个表里所有的数据&#xff0c;直接删总是卡住 思路 产生"假锁"原因 MySQL如果频繁的修改一个表的数据&#xff0c;那么这么表会被锁死。造成假死现象。在网上试过很多种解决方法,重启mysql服务,重连数据库都没有用。 温馨…

谷歌野心真不小!斥巨资扩张在人工智能界的战略地位,Anthropic公司成为跳板

原创 | 文 BFT机器人 近日&#xff0c;谷歌宣布对Anthropic进行重大投资&#xff0c;此举突显了谷歌这家科技巨头对人工智能 (AI) 的不断深化的承诺。此次&#xff0c;谷歌20亿美元的注资不仅增强了自身在快速发展的人工智能领域的立足点&#xff0c;而且标志着该行业动态的深…

[nodejs] 爬虫加入并发限制并发实现痞客邦网页截图

今晚想给偶像的相册截个图,避免某一天网站挂了我想看看回忆都不行,用的是js的木偶师来爬虫台湾的部落格,效果图大概是这样,很不错 问题来了.我很贪心, 我想一次性把相册全爬了,也就是并发 ,这个人的相册有19个!!我一下子要开19个谷歌浏览器那个什么进程, 然后程序就崩了, 我就想…

题号1577 E.迷宫plus (有趣的BFS练习)

题目&#xff1a;样例&#xff1a; 输入 1 5 5 LRLRL LLLLL RRRRR UUUUU UUUUD 输出 4 思路&#xff1a; 一般遇到坐标迷宫&#xff0c;基本上都是DFS 或者 BFS &#xff0c;这里多了一个条件就是要最少修改操作数&#xff0c;所以我们DFS很难控制这一条件&#xff0c;通过 BF…

堆排序之“TOP-K”问题

目录 一、什么是TOP-K问题 二、解决思路 一般的正常思路&#xff1a; 最优的解决思路&#xff1a; 三、文件流中实践TOP-K方法 创建包含足够多整数的文件&#xff1a; 找出最大的K个数 完整版代码&#xff1a; 前面我已经学习过使用“堆排序”对数组排降序了&#xf…

Goby 漏洞发布|F5 BIG-IP AJP 身份认证绕过漏洞(CVE-2023-46747)

漏洞名称&#xff1a;F5 BIG-IP AJP 身份认证绕过漏洞&#xff08;CVE-2023-46747&#xff09; English Name&#xff1a;F5 BIG-IP AJP authentication bypass vulnerability (CVE-2023-46747) CVSS core: 10 影响资产数&#xff1a; 307282 漏洞描述&#xff1a; Cisco …

idea导入git代码

第一种 在本地建一个文件夹&#xff0c;右击 git init git clone https://xxx/xxx.git 发现账号是自己的账号如何改成公司的账号呢&#xff1f;我用的方式是 控制面板 删除后&#xff0c;就可以再次导入代码&#xff0c;就可以输入公司的账号和密码。 第二种 在idea上导入…

比较BFS和DFS

目录 代码框架对比 引出模板 代码框架对比 dfs是栈的递归&#xff0c;bfs是队列的入出。 引出模板 x可以是栈可以是队列&#xff0c;也可以是随机队列、随机容器&#xff0c;一样可以把整张图遍历出来。

Go的命令行工具开发:使用Cobra库

今天我们将深入探讨如何使用Go语言和Cobra库来开发命令行工具。 命令行工具在软件开发中有着广泛的应用&#xff0c;它们快速、高效&#xff0c;且易于自动化。 Go语言因其简洁、高效而被广泛用于命令行工具的开发。Cobra库则是Go中用于构建命令行工具的重要库之一。 为什么选…

Android错题

ctrlo键没有onCrate() 只有继承这个Fragment框架 才能调用ctrlo键onCrate()

比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据)

简介 TensorFlow是由Google团队开发的一个开源深度学习框架&#xff0c;完全基于Python语言设计。它的初衷是以最简单的方式实现机器学习和深度学习的概念&#xff0c;结合了计算代数的优化技术&#xff0c;使计算许多数学表达式变得简单。 优势&#xff1a; 强大的计算能力…

学习笔记二十六:storageclass存储类动态生成存储

storageclass存储类动态生成存储 storageclass作用StorageClass 定义provisioner&#xff1a;供应商reclaimPolicy&#xff1a;回收策略 安装nfs provisioner&#xff0c;用于配合存储类动态生成pv前置条件扩展&#xff1a;什么是sa安装nfs-provisioner程序创建storageclass&am…

DeepSDA

作者未提供代码

会议剪影 | 思腾合力携AI服务器亮相CNCC 2023中国计算机大会

10月26日-28日&#xff0c;第二十届中国计算机大会(CNCC 2023)在沈阳的沈阳新世界博览馆举办。本次大会注册参会观众达到1.3万名&#xff0c;同时还有超过3.6万人次通过CCF视频号直播观看开幕式、特邀报告和大会论坛。直播的4场论坛和活动&#xff0c;人气值达到73万。 “CNCC是…

AR眼镜定制开发-智能眼镜的主板硬件、软件

AR眼镜定制开发是一项复杂而又重要的工作&#xff0c;它需要准备相关的硬件设备和软件。这些设备包括多个传感器、显示装置和处理器等。传感器用于捕捉用户的动作和环境信息&#xff0c;如摄像头、陀螺仪、加速度计等;显示装置则用于将虚拟信息呈现给用户;处理器用于处理和协调…

关于服务端构件模型的典型解决方案

关于服务端构件模型的典型解决方案包括 适用于应用服务器的EJB模型&#xff08;Sun公司J2EE的一部分&#xff09;和COM模型&#xff08;微软公司&#xff09;&#xff0c; 以及适用于Web服务器的servlet模型&#xff08;基于Sun公司JSP技术&#xff09;和Visual Basic及其他技…

NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063

nifi好用,但是对机器的性能要求也高,如果性能达不到,就会导致,问题发生,比如,队列里显示有内容,但是实际上队列是空的,清也清不掉,只能重启,很麻烦. 关于优化:1.配置前端页面刷新的间隔时间默认30秒,我们可以自己需要看的时候手动刷新我们改成300sec 2.修改CPU阻塞时间,提高CPU…

CSS3网页布局基础

CSS布局始于第2个版本&#xff0c;CSS 2.1把布局分为3种模型&#xff1a;常规流、浮动、绝对定位。CSS 3推出更多布局方案&#xff1a;多列布局、弹性盒、模板层、网格定位、网格层、浮动盒等。本章重点介绍CSS 2.1标准的3种布局模型&#xff0c;它们获得所有浏览器的全面、一致…

【Unity】Addressables资源管理笔记

【Unity】Addressables资源管理笔记 Addressables是一种用于管理资源的系统。允许以一种灵活的方式加载、卸载和管理资源&#xff0c;无论是场景、预制件、材质、纹理、音频剪辑等。 一、快速实现 安装Addressables插件 把对象添加到组 1&#xff09;打开AddressablesGroups面…