递归做法:
class Solution {
public:
int getImportance(vector<Employee*> employees, int id) {
for(int i=0;i<employees.size();i++){
if(employees[i]->id == id){
int sum = employees[i]->importance;
if(employees[i]->subordinates.size()==0){
return sum;
}
else{
for(int j=0;j<employees[i]->subordinates.size();j++){
sum += getImportance(employees,employees[i]->subordinates[j]);
}
}
return sum;
}
}
return 0;
}
};
加了哈希表的作法:
class Solution {
public:
int getImportance(vector<Employee*> employees, int id) {
map<int, Employee*> Map;
for(Employee* e:employees){
Map[e->id] = e;
}
return getImportanceHelper(Map,id);
}
int getImportanceHelper(map<int, Employee*> Map, int id) {
Employee *employee = Map[id];
for (int Id: employee->subordinates) {
employee->importance += getImportanceHelper(Map, Id);
}
return employee->importance;
}
};