1. 程式人生 > >leetcode 851. Loud and Rich

leetcode 851. Loud and Rich

int map leet ret efault fault vector elf lee

class Solution {
    int dfs(vector<int>&res,int i,vector<int>& quiet,map<int,vector<int>>& m){
        if(res[i]>0) return res[i];
        res[i]=i;
        for(int j=0;j<m[i].size();++j){
            if(quiet[res[i]]>quiet[dfs(res,m[i][j],quiet,m)])
                res[i]
=res[m[i][j]]; } return res[i]; } public: vector<int> loudAndRich(vector<vector<int>>& richer, vector<int>& quiet) { map<int,vector<int>> m; for(auto& v: richer){ m[v[1]].push_back(v[0]); } vector
<int> res=vector<int>(quiet.size(),-1); for(int i=0;i<quiet.size();++i){ dfs(res,i,quiet,m); } return res; } };

python代碼

class Solution(object):
    def loudAndRich(self, richer, quiet):
        """
        :type richer: List[List[int]]
        :type quiet: List[
int] :rtype: List[int] """ m=collections.defaultdict(list) for i,j in richer: m[j].append(i) res=[-1]*len(quiet) def dfs(i): if res[i]>0: return res[i] res[i]=i for j in m[i]: if quiet[res[i]]>quiet[dfs(j)]: res[i]=res[j] return res[i] for i in range(len(res)): dfs(i) return res

leetcode 851. Loud and Rich