• LeetCode Employee Importance


    原题链接在这里:https://leetcode.com/problems/employee-importance/description/

    题目:

    You are given a data structure of employee information, which includes the employee's unique id, his importance value and his directsubordinates' 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 is not 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, []]], 1
    Output: 11
    Explanation:
    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:

    1. One employee has at most one direct leader and may have several subordinates.
    2. The maximum number of employees won't exceed 2000.

    题解:

    类似Clone GraphNested List Weight Sum.

    可以采用BFS. 每层的Employee挨个加进去.

    Time Complexity: O(n). n是root id的所有下属个数, 包括直系下属和非直系下属.

    Space: O(employees.size()). 全部员工生成的map.

    AC Java:

     1 /*
     2 // Employee info
     3 class Employee {
     4     // It's the unique id of each node;
     5     // unique id of this employee
     6     public int id;
     7     // the importance value of this employee
     8     public int importance;
     9     // the id of direct subordinates
    10     public List<Integer> subordinates;
    11 };
    12 */
    13 class Solution {
    14     public int getImportance(List<Employee> employees, int id) {
    15         int res = 0;
    16         
    17         HashMap<Integer, Employee> hm = new HashMap<Integer, Employee>();
    18         for(Employee employee : employees){
    19             hm.put(employee.id, employee);
    20         }
    21         
    22         LinkedList<Employee> que = new LinkedList<Employee>();
    23         que.add(hm.get(id));
    24         while(!que.isEmpty()){
    25             Employee cur = que.poll();
    26             res += cur.importance;
    27             for(int subId : cur.subordinates){
    28                 que.add(hm.get(subId));
    29             }
    30         }
    31         
    32         return res;
    33     }
    34 }

    DFS.逐层往深dfs.

    Time Complexity: O(n). n是root id的所有下属个数, 包括直系下属和非直系下属.

    Space: O(employees.size()). 全部员工生成的map.

    AC Java:

     1 /*
     2 // Employee info
     3 class Employee {
     4     // It's the unique id of each node;
     5     // unique id of this employee
     6     public int id;
     7     // the importance value of this employee
     8     public int importance;
     9     // the id of direct subordinates
    10     public List<Integer> subordinates;
    11 };
    12 */
    13 class Solution {
    14     public int getImportance(List<Employee> employees, int id) {
    15         HashMap<Integer, Employee> hm = new HashMap<Integer, Employee>();
    16         for(Employee employee : employees){
    17             hm.put(employee.id, employee);
    18         }
    19         
    20         return dfs(hm, id);
    21     }
    22     
    23     private int dfs(HashMap<Integer, Employee> hm, int id){
    24         int res = 0;
    25         Employee cur = hm.get(id);
    26         
    27         res += cur.importance;
    28         for(int subId : cur.subordinates){
    29             res += dfs(hm, subId);
    30         }
    31         return res;
    32     }
    33 }
  • 相关阅读:
    C#读取Excel设置(亲测可用)
    vue element-ui的对话框dialog没有height怎么解决?
    sqlserver不同服务器的不同数据库如何复制
    es6-对象与数组的解构赋值
    win10电脑上不了网了
    sqlserver数据库备份之后再还原
    “相对路径”以及“绝对路径”使用之坑
    sqlserver表-添加大量测试数据
    vue文件命名规范
    Git大小写问题
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/7624915.html
Copyright © 2020-2023  润新知