员工的重要性
这是一道简单题,很明显的dfs或者其他树搜索方式;
然而我还在纠结怎么建树,其实根本不用显示建立,用哈希表记录id和对应的指针,就能遍历到了
感觉应该是五分钟写出的题,不应该迟疑的
时空复杂度都是O(n)
class Solution {
void dfs(Employee* root,int&res,unordered_map<int,Employee*>& mp){
if (root == nullptr)
return;
res+=root->importance;
for(int&x:root->subordinates)
dfs(mp[x],res,mp);
}
public:
int getImportance(vector<Employee*> employees, int id) {
unordered_map<int,Employee*>mp;
for(auto&emp:employees)
mp[emp->id] = emp;
int res = 0;
dfs(mp[id],res,mp);
return res;
}
};