Skip to content

Latest commit

 

History

History
29 lines (27 loc) · 915 Bytes

1125.md

File metadata and controls

29 lines (27 loc) · 915 Bytes

1125. Smallest Sufficient Team

Solution 1 (time O(m2^n), space O(m2*n))

# Dynamic programming
class Solution(object):
    def smallestSufficientTeam(self, req_skills, people):
        """
        :type req_skills: List[str]
        :type people: List[List[str]]
        :rtype: List[int]
        """
        n, m = len(req_skills), len(people)
        skill_index = {v: i for i, v in enumerate(req_skills)}
        dp = [None] * (1 << n)
        dp[0] = []
        for i, p in enumerate(people):
            cur_skill = 0
            for s in p:
                cur_skill |= 1 << skill_index[s]
            for prev in range(1 << n):
                if dp[prev] is None:
                    continue
                comb = prev | cur_skill
                if dp[comb] is None or len(dp[comb]) > len(dp[prev]) + 1:
                    dp[comb] = dp[prev] + [i]
        return dp[(1 << n) - 1]