每日一题 --- 力扣2003—每棵子树内缺失的最小基因值

图片借用B站灵茶山文艾府

 

打卡代码(记得看,有注释):

class Solution {
public:vector<int> smallestMissingValueSubtree(vector<int> &parents, vector<int> &nums) {int n = parents.size();vector<int> ans(n,1);auto it = find(nums.begin(),nums.end(),1);//寻找基因值为1的编号,然后向上合并if(it == nums.end()) return ans;//未找到基因值为1的编号就返回unordered_set<int> vist;//存放基因值stack<int> stk;int node = it - nums.begin();//找到基因值为1的节点编号,第一次是基因值为1的编号,下次就是从下往上的顺序的节点编号了//node编号定义为当前子树根节点的编号//从基因值为1的节点编号开始可以保证以O(N)的复杂度遍历完并判断完成//建树,建一个存子树节点的数组//为什么这么建树呢,因为我们遍历当前子树的时候,一定要遍历完下面的子树才能//去遍历上面的子树,这样才能确保我们从下往上时我们的基因值是正确的//假设不这样遍历的话,那么就导致,再往上遍历的时候,最小基因值的判断就不包括下面的子树了//而我们从基因值为1的节点编号的子树开始,在遍历子树的时候能确保我们在计算基因值的的时候,能包含上次最小的基因值vector<vector<int>> g(n + 100);for(int i = 1;i < n;i++) g[parents[i]].push_back(i);//建一棵下标为父节点的,内部元素为邻近子节点的编号,就是相当于该节点的//直连的子节点int min_val = 2;//最小基因值int pre = -1;//pre定义为当前node根节点的树的一棵子树的编号,while(node >= 0){vist.insert(nums[node]);//插入到基因值序列中//插入完之后进行遍历该节点的子树,确保我们是从下往上遍历的for(auto son:g[node]){if(son != pre)//如果该子节点没有被遍历,加入到栈中{stk.push(son);}}//遍历当前node根节点的子节点while(!stk.empty()){int root = stk.top();stk.pop();vist.insert(nums[root]);for(auto son:g[root]) stk.push(son);}while(vist.count(min_val)) min_val++;//如果没有当前最小基因值,那当前node子树的的最小基因值就是min_valans[node] = min_val;pre = node;node = parents[node];}return ans;}
};

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

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

相关文章

【漏洞复现】Drupal_小于7.32版本 _“Drupalgeddon” SQL注入漏洞(CVE-2014-3704)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 说明内容漏洞编号CVE-2014-3704漏洞名称Drupal “Drupalgeddon” SQL注入漏洞漏洞…

Technology strategy Pattern 学习笔记1-Context: Architecture and Strategy

Context: Architecture and Strategy 1 Architect and Strategist 1.1 three primary concerns of the architect 1.1.1 Contain entropy(熵-混乱程度&#xff0c;不确定性&#xff0c;惊奇程度&#xff0c;不可预测性&#xff0c;信息量等等&#xff09; The architect wh…

基于51单片机的烟雾和温湿度检测控制系统仿真(智能防火系统,火灾报警灭火系统)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;单片机防火 获取完整源码源文件仿真源文件论文报告说明文档等 基于51单片机的光照及温湿度检测报警控制系统 由STC89C52单片机LCD1602液晶显示屏ADC0832模块蜂鸣器DHT11温湿度传感器 烟雾传感器LED按键构成 具体功能&…

java网络通信

浏览器中输入&#xff1a;“www.woaijava.com”之后都发生了什么&#xff1f; 请详细阐述 由域名→IP地址 寻找IP地址的过程依次经过了浏览器缓存、系统缓存、hosts文件、路由器缓存、 递归搜索根域名服务器。 建立TCP/IP连接&#xff08;三次握手具体过程&#xff09; 由浏览…

【JavaEE】JVM 剖析

JVM 1. JVM 的内存划分2. JVM 类加载机制2.1 类加载的大致流程2.2 双亲委派模型2.3 类加载的时机 3. 垃圾回收机制3.1 为什么会存在垃圾回收机制?3.2 垃圾回收, 到底实在做什么?3.3 垃圾回收的两步骤第一步: 判断对象是否是"垃圾"第二步: 如何回收垃圾 1. JVM 的内…

【网络协议】聊聊DNS协议如何域名解析和负载均衡

DNS 服务器 我们知道如果使用IP地址进行访问网站&#xff0c;很难进行记忆&#xff0c;所以DNS的作用是将域名转换成对应的IP地址。如果全世界都使用同一台DNS服务器&#xff0c;那么DNS服务器本身需要保证服务的高可用、高性能&#xff0c;以及分布式等。最好的方式就是分层。…

安吉寻梦桃花原

安吉——西湖边的那片竹海 安吉县&#xff0c;地处浙江西北部&#xff0c;湖州市辖县之一&#xff0c;北靠天目山&#xff0c;面向沪宁杭。建县于公元185年&#xff0c;县名出自《诗经》“安且吉兮”之意。 安吉县生态环境优美宜居&#xff0c;境内“七山一水二分田”&#xf…

el-select 搜索无选项时 请求接口添加输入的值

el-select 搜索无选项时 请求接口添加输入的值 <template><div class"flex"><el-select class"w250" v-model"state.brand.id" placeholder"请选择" clearable filterable :filter-method"handleQu…

ZZ038 物联网应用与服务赛题第J套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;J卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用…

node插件express(路由)的插件使用(二)——body-parser和ejs插件的基本使用

文章目录 前言一、express使用中间件body-parser获取请全体的数据1. 代码2. 效果 二、express使用ejs&#xff08;了解即可&#xff09;1.安装2.作用3.基本使用&#xff08;1&#xff09;代码&#xff08;2&#xff09;代码分析和效果 4.列表渲染&#xff08;1&#xff09;代码…

【算法|二分查找No.3】leetcode 35. 搜索插入位置

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

代码随想录 Day37 完全背包理论基础 卡码网T52 LeetCode T518 零钱兑换II T377 组合总和IV

完全背包理论基础 0-1背包理论基础:0-1背包理论基础 完全背包就是在0-1背包的基础上加上了一个条件,0-1背包中每个物品只能选择一次,而在完全背包上一个物品可以选择多次,其实也很简单,只需要修改一部分的代码就可以实现,没了解过0-1背包的友友可以去看我的0-1背包理论基础,下面…