Leetcode每日一题:690.employee-importance(员工的重要性)
程序员文章站
2024-03-22 12:25:10
...
思路:找下属,求重要性和直接用BFS即可,关键是这里的数据结构不是链表,如何最快速度找到下属是最重要的;这里我用map将每个员工的id-下标索引
存储起来,直接通过id得到其员工属性;
int getImportance(vector<Employee *> employees, int id)
{
map<int, int> m; //建立员工id-数组索引的映射;
int len = employees.size();
//初始化m
for (int i = 0; i < len; i++)
{
m[employees[i]->id] = i;
}
int import_sum = 0;
queue<int> q;
q.push(id);
while (!q.empty())
{
int q_len = q.size();
while (q_len--)
{
Employee *cur = employees[m[q.front()]];
q.pop();
import_sum += cur->importance;
for (auto i : cur->subordinates)
{
q.push(i);
}
}
}
return import_sum;
}
上一篇: 大数据私房菜面试题
推荐阅读
-
Leetcode每日一题:690.employee-importance(员工的重要性)
-
LeetCode每日一题 19. 删除链表的倒数第N个节点
-
LeetCode每日一题---19.删除链表的倒数第n个节点
-
LeetCode每日一题———945. 使数组唯一的最小增量
-
LeetCode每日一题———面试题40. 最小的k个数
-
[算法]LeetCode每日一题--41. 缺失的第一个正数(Java)
-
【每日一题】LeetCode. 41.缺失的第一个正数
-
【LeetCode每日一题】[简单]976. 三角形的最大周长
-
Leetcode每日一题:976.largest-perimeter-triangle(三角形的最大周长)
-
每日一题 21.1.5 LeetCode 830. 较大分组的位置 java题解