Algorithms(四)Employee Importance
来源:互联网 发布:python spark视频教程 编辑:程序博客网 时间:2024/06/14 15:44
题目:
Employee Importance
You are given a data structure of employee information, which includes the employee'sunique id, his importance value and his direct subordinates' id.
For example, employee 1 is the leader of employee 2, and employee 2 is the leader of employee 3. They have importance value 15, 10 and 5, respectively. Then employee 1 has a data structure like [1, 15, [2]], and employee 2 has [2, 10, [3]], and employee 3 has [3, 5, []]. Note that although employee 3 is also a subordinate of employee 1, the relationship isnot direct.
Now given the employee information of a company, and an employee id, you need to return the total importance value of this employee and all his subordinates.
Example 1:
Input: [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1Output: 11Explanation:Employee 1 has importance value 5, and he has two direct subordinates: employee 2 and employee 3. They both have importance value 3. So the total importance value of employee 1 is 5 + 3 + 3 = 11.
Note:
- One employee has at most one direct leader and may have several subordinates.
- The maximum number of employees won't exceed 2000.
代码:
/*// Employee infoclass Employee {public: // It's the unique ID of each node. // unique id of this employee int id; // the importance value of this employee int importance; // the id of direct subordinates vector<int> subordinates;};*/class Solution {public: int getImportance(vector<Employee*> employees, int id) { unordered_map<int, Employee*> map; for(const auto element : employees){ map[element->id] = element; } return help(map, id); } int help(unordered_map<int, Employee*>& map, const int id){ auto sum = map[id]->importance; for(const auto element : map[id]->subordinates){ sum += help(map, element); } return sum; }};
算法:
- 用map容器存储所有employee信息,将id设为Key值,每一个id唯一标识一个employee对象。
- 对于一个给定的id值,采用深度优先算法,对map[id]的每个子对象递归搜索它们的子对象,直到该子对象为空,返回这条路上的important value的累加值,直到对map[id]的所有子对象都做完上述操作,返回sum最终值。
补充:
jdk 5.0新增了一个遍历叫foreach,冒号前是要遍历的集合,冒号后是实例化一个集合中包含的元素。举例:
ArrayList<类A> list = new ArrayList<类A>();
for(类A : list) {
操作a;
}
- Algorithms(四)Employee Importance
- 690. Employee Importance(BFS)
- Employee Importance
- Employee Importance
- Employee Importance
- 690. Employee Importance
- [LeetCode] 690. Employee Importance
- 12.leetCode690. Employee Importance
- leetcode 690. Employee Importance
- 690 leetcode employee importance
- python--leetcode690. Employee Importance
- [LeetCode] 690. Employee Importance
- LeetCode # 690 Employee Importance
- 690-Employee Importance
- 690. Employee Importance
- 690. Employee Importance
- 690. Employee Importance
- 690. Employee Importance
- 单例模式解析properties 配置文件
- 列表:一个打了激素的数组3
- 《deep learning》学习笔记(6)——深度前馈网络
- HDU 6196 happy happy happy(暴搜+剪枝+dp)
- QT学习-----综合
- Algorithms(四)Employee Importance
- 第五章
- Win32 application和Win32 Console application的区别
- 顺序性容器(vector&list&deque)
- EditText中maxLines属性无效的问题
- 第一章
- Zookeeper集群
- Codeforces Round #436 (Div. 2) 做题总结
- jQuery事件学习笔记