Leetcode--690员工的重要性
作者:互联网
代码+解题思路
//迭代法
//因为每个人可能有下属员工,所以先把整个列表结构存入map中,然后对存在下属的情况进行迭代操作
class Solution {
Map<Integer,Employee> map = new HashMap<>();
public int getImportance(List<Employee> employees, int id) {
int n = employees.size();
for(int i=0;i<n;i++)
map.put(employees.get(i).id,employees.get(i));//将列表中的数据依次按照(id,所有数据)进行存储
return getVal(id);
}
public int getVal(int id)
{
Employee manner = map.get(id);//根据id获取完整的信息
int result = manner.importance;//获取当前id自己的重要性值
for(int i : manner.subordinates)//对其下属的信息进行遍历,因为下属信息存在subordinate列表中,所以使用for-each进行读取
{
Employee e = map.get(i);
result += e.importance;
for(int j:e.subordinates)//如果该下属也有下属,则进行迭代
result += getVal(j);
}
return result;
}
}
//借助栈实现
class Solution {
public int getImportance(List<Employee> employees, int id) {
Map<Integer,Employee> map = new HashMap<>();
int n = employees.size();
for(int i=0;i<n;i++)
map.put(employees.get(i).id, employees.get(i));
int result = 0;//存储结果值
Deque<Employee> d = new LinkedList<>();//使用栈结构辅助存储
d.addLast(map.get(id));//先存储给定id对应的数据
while(!d.isEmpty())//反复遍历,直至不存在下属为止
{
Employee e = d.pollFirst();//获取当前的员工信息
result += e.importance;//结果值加上当前员工的import值
for(int i:e.subordinates)//把当前员工对应的下属信息依次入栈
d.addLast(map.get(i));
}
return result;
}
}
标签:map,690,get,--,下属,id,int,result,Leetcode 来源: https://blog.csdn.net/weixin_41963310/article/details/116329319