diff --git a/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/README.md b/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/README.md index ce1954306d327..c200fd0ddd585 100644 --- a/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/README.md +++ b/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/README.md @@ -334,6 +334,58 @@ func dividePlayers(skill []int) int64 { } ``` +#### TypeScript + +```ts +function dividePlayers(skill: number[]): number { + let [sum, res, map] = [0, 0, new Map()]; + + for (const x of skill) { + sum += x; + map.set(x, (map.get(x) || 0) + 1); + } + sum /= skill.length / 2; + + for (let [x, c] of map) { + const complement = sum - x; + if ((map.get(complement) ?? 0) !== c) return -1; + if (x === complement) c /= 2; + + res += x * complement * c; + map.delete(x); + map.delete(complement); + } + + return res; +} +``` + +#### JavaScript + +```js +function dividePlayers(skill) { + let [sum, res, map] = [0, 0, new Map()]; + + for (const x of skill) { + sum += x; + map.set(x, (map.get(x) || 0) + 1); + } + sum /= skill.length / 2; + + for (let [x, c] of map) { + const complement = sum - x; + if ((map.get(complement) ?? 0) !== c) return -1; + if (x === complement) c /= 2; + + res += x * complement * c; + map.delete(x); + map.delete(complement); + } + + return res; +} +``` + diff --git a/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/README_EN.md b/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/README_EN.md index 2b6db5edd6a7f..a49d562f51ab4 100644 --- a/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/README_EN.md +++ b/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/README_EN.md @@ -33,7 +33,7 @@ tags:
 Input: skill = [3,2,5,1,3,4]
 Output: 22
-Explanation: 
+Explanation:
 Divide the players into the following teams: (1, 5), (2, 4), (3, 3), where each team has a total skill of 6.
 The sum of the chemistry of all the teams is: 1 * 5 + 2 * 4 + 3 * 3 = 5 + 8 + 9 = 22.
 
@@ -43,7 +43,7 @@ The sum of the chemistry of all the teams is: 1 * 5 + 2 * 4 + 3 * 3 = 5 + 8 + 9
 Input: skill = [3,4]
 Output: 12
-Explanation: 
+Explanation:
 The two players form a team with a total skill of 7.
 The chemistry of the team is 3 * 4 = 12.
 
@@ -53,7 +53,7 @@ The chemistry of the team is 3 * 4 = 12.
 Input: skill = [1,1,2,3]
 Output: -1
-Explanation: 
+Explanation:
 There is no way to divide the players into teams such that the total skill of each team is equal.
 
@@ -332,6 +332,58 @@ func dividePlayers(skill []int) int64 { } ``` +#### TypeScript + +```ts +function dividePlayers(skill: number[]): number { + let [sum, res, map] = [0, 0, new Map()]; + + for (const x of skill) { + sum += x; + map.set(x, (map.get(x) || 0) + 1); + } + sum /= skill.length / 2; + + for (let [x, c] of map) { + const complement = sum - x; + if ((map.get(complement) ?? 0) !== c) return -1; + if (x === complement) c /= 2; + + res += x * complement * c; + map.delete(x); + map.delete(complement); + } + + return res; +} +``` + +#### JavaScript + +```js +function dividePlayers(skill) { + let [sum, res, map] = [0, 0, new Map()]; + + for (const x of skill) { + sum += x; + map.set(x, (map.get(x) || 0) + 1); + } + sum /= skill.length / 2; + + for (let [x, c] of map) { + const complement = sum - x; + if ((map.get(complement) ?? 0) !== c) return -1; + if (x === complement) c /= 2; + + res += x * complement * c; + map.delete(x); + map.delete(complement); + } + + return res; +} +``` + diff --git a/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/Solution2.js b/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/Solution2.js new file mode 100644 index 0000000000000..afe6bb2ede274 --- /dev/null +++ b/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/Solution2.js @@ -0,0 +1,21 @@ +function dividePlayers(skill) { + let [sum, res, map] = [0, 0, new Map()]; + + for (const x of skill) { + sum += x; + map.set(x, (map.get(x) || 0) + 1); + } + sum /= skill.length / 2; + + for (let [x, c] of map) { + const complement = sum - x; + if ((map.get(complement) ?? 0) !== c) return -1; + if (x === complement) c /= 2; + + res += x * complement * c; + map.delete(x); + map.delete(complement); + } + + return res; +} diff --git a/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/Solution2.ts b/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/Solution2.ts new file mode 100644 index 0000000000000..75d9ca3587072 --- /dev/null +++ b/solution/2400-2499/2491.Divide Players Into Teams of Equal Skill/Solution2.ts @@ -0,0 +1,21 @@ +function dividePlayers(skill: number[]): number { + let [sum, res, map] = [0, 0, new Map()]; + + for (const x of skill) { + sum += x; + map.set(x, (map.get(x) || 0) + 1); + } + sum /= skill.length / 2; + + for (let [x, c] of map) { + const complement = sum - x; + if ((map.get(complement) ?? 0) !== c) return -1; + if (x === complement) c /= 2; + + res += x * complement * c; + map.delete(x); + map.delete(complement); + } + + return res; +}