690.员工的重要性
给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。
比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工1的数据结构中。
现在输入一个公司的所有员工信息,以及单个员工id,返回这个员工和他所有下属的重要度之和。
示例 1:
输入: [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1
输出: 11
解释:
员工1自身的重要度是5,他有两个直系下属2和3,而且2和3的重要度均为3。因此员工1的总重要度是 5 + 3 + 3 = 11。
注意:
一个员工最多有一个直系领导,但是可以有多个直系下属
员工数量不超过2000。
来源:力扣(LeetCode)
此题和N叉树的最大深度有相似之处。
思路:先找到员工的ID,之后再找这个员工的下属subordinates。依次遍历下属,先找到下属的ID,再找他的subordinates。。。。。果真递归。写了这些递归题,感觉更得心应手了。是不是错觉呢。。。。
int getImportance(vector<Employee*> employees, int id) {int ans;for(auto a:employees){if(a->id==id){ans=a->importance;if(a->subordinates.size()==0) return ans;for(auto b:a->subordinates){ans=getImportance(employees,b)+ans;} }}return ans;}
看了题解,用map做了下优化。省去了查找ID的循环。无序比有序更节约时间。
unordered_map<int,Employee*>node;int getImportance(vector<Employee*> employees, int id) {for(auto a:employees){node[a->id]=a;} return dfs(id);}int dfs(int id){Employee *p=node[id];int ans=p->importance;for(auto a:p->subordinates){ans+=dfs(a);}return ans;}
690.员工的重要性相关推荐
- 690. 员工的重要性
690. 员工的重要性 原文:原文链接 给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id. 比如,员工1是员工2的领导,员工2是员工3的领导.他们相应的重要度为15, ...
- leetcode 690. 员工的重要性(dfs)
给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id . 比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导.他们相应的重要度为 15 , 10 , ...
- LeetCode 690. 员工的重要性(图的DFSBFS)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id. 比如,员工1是员工2的领导,员工2是 ...
- Java——员工的重要性
题目链接 leetcode在线oj题--员工的重要性 题目描述 给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id . 比如,员工 1 是员工 2 的领导,员工 ...
- Leetcode每日一题:690.employee-importance(员工的重要性)
思路:找下属,求重要性和直接用BFS即可,关键是这里的数据结构不是链表,如何最快速度找到下属是最重要的:这里我用map将每个员工的id-下标索引存储起来,直接通过id得到其员工属性: int getI ...
- leetcode690. 员工的重要性(bfs)
给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id. 比如,员工1是员工2的领导,员工2是员工3的领导.他们相应的重要度为15, 10, 5.那么员工1的数据结构是[1 ...
- Leetcode690.Employee Importance员工的重要性
给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id. 比如,员工1是员工2的领导,员工2是员工3的领导.他们相应的重要度为15, 10, 5.那么员工1的数据结构是[1 ...
- LC690. 员工的重要性
BFS,这题主要考察对数据结构的掌握,把员工的数据以哈希表的形式进行存储,通过id获取整个员工的信息 def getImportance(self, employees, id):"&quo ...
- C#LeetCode刷题-广度优先搜索
广度优先搜索篇 # 题名 刷题 通过率 难度 101 对称二叉树 42.1% 简单 102 二叉树的层次遍历 49.7% 中等 103 二叉树的锯齿形层次遍历 43.0% 中等 107 二叉树的层次遍 ...
最新文章
- openEuler系统配置yum镜像源
- vue操作dom_vue源码全面解析(四十六)源码中操作DOM的方法集合
- ps怎么一下选中多个图层_PS图层基本操作,零基础小白必学
- *dev=filp-private_data;这一句的理解
- jdbc写入和读取过程
- 第 1 节:前端面试指南 — 简历篇
- linux 变量c file代表的内容.,LinuxC编程基础--mak.ppt
- android退出一个含有listview的activity时报java.lang.IllegalA
- 【漏洞公告】高危:Windows系统 SMB/RDP远程命令执行漏洞
- 阿里巴巴Java开发文档2020版学习-日期时间
- hbase版本与Hadoop版本支持关系(官方)
- servlet实现统计网站访问量
- 张云茹计算机,重庆理工大学药学与生物工程学院研究生导师简介-张云茹
- mysql增加连接_mysql增加连接数
- python storm连接mysql_Python ORM Storm 源码修改
- 局域网计算机间的传输介质,计算机局域网知识点:传输介质
- 基于安卓平台,客户端视频监控的实现(三)
- Java、统计正数和负数的个数然后计算这些数的平均值
- Linux系统高树攀登之路
- R语言C指数,如何在R软件中求一致性指数( Harrell concordance index:C-index)?
热门文章
- 【从零学习OpenCV 4】opencv_contrib扩展模块的安装
- Mysql从5.0升级到 5.1.73
- Linux 4.18 内核新补丁移除了Lustre 文件系统
- 2013-7-12学习笔记
- mysql root的密码忘了?linux下重置mysql的root用户密码。
- Spring中jdbcTemplate的用法实例
- 分享一例脚本发版和tomcat重启脚本
- “笨方法”学习Python笔记(2)-VS Code作为文本编辑器以及配置Python调试环境
- vim中权限不足时不用退出而强制保存
- 分享一个监控MFS的nagios插件