給定一個保存員工信息的數據結構,它包含了員工唯一的id,重要度?和?直系下屬的id。
比如,員工1是員工2的領導,員工2是員工3的領導。他們相應的重要度為15, 10, 5。那么員工1的數據結構是[1, 15, [2]],員工2的數據結構是[2, 10, [3]],員工3的數據結構是[3, 5, []]。注意雖然員工3也是員工1的一個下屬,但是由于并不是直系下屬,因此沒有體現在員工1的數據結構中。
現在輸入一個公司的所有員工信息,以及單個員工id,返回這個員工和他所有下屬的重要度之和。
示例 1:
輸入: [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1 輸出: 11 解釋: 員工1自身的重要度是5,他有兩個直系下屬2和3,而且2和3的重要度均為3。因此員工1的總重要度是 5 + 3 + 3 = 11。
注意:
- 一個員工最多有一個直系領導,但是可以有多個直系下屬
- 員工數量不超過2000。
?
?
方法一:
類似樹的層次遍歷
class Solution {
public:int getImportance(vector<Employee*> employees, int id){if(employees.size() == 0)return 0;int sum = 0;map<int, Employee*> check;for(int i = 0; i < employees.size(); i++){check[employees[i] ->id] = employees[i];}queue<Employee*> q;q.push(check[id]);while(!q.empty()){int len = q.size();for(int i = 0; i < len; i++){Employee* temp = q.front();q.pop();sum += temp ->importance;for(int j = 0; j < temp ->subordinates.size(); j++){q.push(check[temp ->subordinates[j]]);}}}return sum;}
};
?