员工的重要性

40 篇文章 0 订阅

员工的重要性,深度优先算法

package org.example;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
    public static void main(String[] args) {

    }

    // 员工的重要性

    //    你有一个保存员工信息的数据结构,它包含了员工唯一的 id ,重要度和直系下属的 id 。
    //    给定一个员工数组 employees,其中:
    //    employees[i].id 是第 i 个员工的 ID。
    //    employees[i].importance 是第 i 个员工的重要度。
    //    employees[i].subordinates 是第 i 名员工的直接下属的 ID 列表。
    //    给定一个整数 id 表示一个员工的 ID,返回这个员工和他所有下属的重要度的 总和。

    //    输入:employees = [[1,5,[2,3]],[2,3,[]],[3,3,[]]], id = 1
    //    输出:11
    //    解释:
    //    员工 1 自身的重要度是 5 ,他有两个直系下属 2 和 3 ,而且 2 和 3 的重要度均为 3 。因此员工 1 的总重要度是 5 + 3 + 3 = 11

    Map<Integer,Employee> map = new HashMap<Integer,Employee>();
    public int getImportance(List<Employee> employees,int id){
       for(Employee employee:employees){
           map.put(employee.id,employee);
       }
       return dfs(id);
    }
    private int dfs(int id) {
        Employee employee=map.get(id);
        int total = employee.importance;
        List<Integer> subordinates = employee.subordinates;
        for(int subId:subordinates){
            total+=dfs(subId);
        }
        return total;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值