题目:

给定一个保存员工信息的数据结构,它包含了员工唯一的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。

注意:

  1. 一个员工最多有一个直系领导,但是可以有多个直系下属
  2. 员工数量不超过2000。

分析:

这个题目dfs和bfs都可以做,但是bfs更简单,因为只要你一层一层向下遍历,就不会出现重复和遗漏的情况。

代码:

 //25ms 40%
class Solution {
public int getImportance(List<Employee> employees, int id) {
Queue<Employee> que = new LinkedList<Employee>();
int imp=0;
for(int n=0;n<employees.size();++n)
if(employees.get(n).id==id) {
que.add(employees.get(n));
imp+=employees.get(n).importance;
break;
}
while(!que.isEmpty()) {
Employee e=que.poll();
for(int m=0;m<e.subordinates.size();++m) {
for(int n=0;n<employees.size();++n) {
if(employees.get(n).id==e.subordinates.get(m)) {
que.add(employees.get(n));
imp+=employees.get(n).importance;
break;
}
}
}
}
return imp;
}
}

最新文章

  1. 转:在java中使用dom4j解析xml
  2. 基于webrtc的资源释放问题(一)
  3. JMS介绍入门大白话版
  4. webservice 协议
  5. mysql中explain看性能
  6. require.js入门指南(二)
  7. centos7安装chrome及加载poatman开发插件
  8. CSS3属性值之box-shadow
  9. c++ :: 域操作符
  10. TOJ4114(活用树状数组)
  11. cu命令
  12. 简单有效:解决 Excel 打开 UTF-8 编码 CSV 文件乱码的 BUG
  13. 关于报错:There is already &#39;xxxController&#39; bean method的解决方法
  14. CentOS ln 链接
  15. g++编译后中文显示乱码解决方案
  16. 服务器能ping通ip,通不了域名解决方案
  17. 8-1 Stacks of Flapjacks UVA120
  18. python opencv3 图像与原始字节转换
  19. PHP的钩子实现解析
  20. 【free() invalid next size】谨慎地在C++的类中存储指针来方便访问其他节点

热门文章

  1. 禁用u盘再启用
  2. CentOS7基于http方式搭建本地yum源
  3. Day4-T2
  4. php.laravel.部署
  5. servlet 之 HttpServlet抽象类详解
  6. Windows + Python + flup + flask + fastcgi + Nginx配置
  7. UVA - 12118 Inspector&#39;s Dilemma(检查员的难题)(欧拉回路)
  8. df 、dh
  9. LIS是什么?
  10. Sequence Models Week 1 Character level language model - Dinosaurus land