Skip to content

Latest commit

 

History

History
32 lines (28 loc) · 821 Bytes

851.md

File metadata and controls

32 lines (28 loc) · 821 Bytes

851. Loud and Rich

Solution 1 (time O(n), space O(m))

# DFS
class Solution(object):
    def loudAndRich(self, richer, quiet):
        """
        :type richer: List[List[int]]
        :type quiet: List[int]
        :rtype: List[int]
        """
        n = len(quiet)
        info = [[] for _ in range(n)]
        for x, y in richer:
            info[y].append(x)
        ans = [-1 for _ in range(n)]

        def dfs(cur_ind):
            if ans[cur_ind] != -1:
                return
            ans[cur_ind] = cur_ind
            for new_ind in info[cur_ind]:
                dfs(new_ind)
                if quiet[ans[new_ind]] < quiet[ans[cur_ind]]:
                    ans[cur_ind] = ans[new_ind]

        for i in range(n):
            dfs(i)
        return ans