1
/**
2
* @param {string[]} req_skills
3
* @param {string[][]} people
4
* @return {number[]}
5
*/
6
var smallestSufficientTeam = function (req_skills, people) {
7
const skillIndexMap = new Map();
8

9
req_skills.forEach((skill, index) => skillIndexMap.set(skill, index));
10

11
const skillTeamMap = new Map([[0, []]]);
12

13
people.forEach((skills, index) => {
14
let hisSkills = 0;
15

16
for (const skill of skills) {
17
hisSkills |= 1 << skillIndexMap.get(skill);
18
}
19

20
for (const [currSkill, team] of skillTeamMap) {
21
const totalSkills = currSkill | hisSkills;
22

23
if (totalSkills === currSkill) {
24
continue;
25
}
26

27
if (
28
!skillTeamMap.has(totalSkills) ||
29
team.length + 1 < skillTeamMap.get(totalSkills).length
30
) {
31
skillTeamMap.set(totalSkills, [...team, index]);
32
}
33
}
34
});
35

36
return skillTeamMap.get((1 << req_skills.length) - 1);
37
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0