Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2024-10-06 10:11:43
2491. Divide Players Into Teams of Equal Skill
给一个正整数矩阵SKILL,长度为偶数
将skill分成两两一组,每一组的总和相等
将每一组的两个数字相乘
并把每组的结果相加
再回传
如果没办法达成上述条件
请回传-1
思路:
首先将skill所有元素相加得到sum
skill的长度为n
把sum/(n/2)
如果余数非零则回传-1
接着用hash map纪录每个数字出现的次数
目标是两个数字相加=sum/(n/2)
看是不是所有数字都可以配对到
可以的话就照题目得到答案
不行就回传-1
golang code:
func dividePlayers(skill []int) int64 {
sum, n, cnt := 0, len(skill), 0
for _, val := range skill {
sum += val
}
if sum%(n/2) != 0 {
return -1
}
target := sum *2 /n
sum = 0
rec := make(map[int]int)
for _, val := range skill {
idx := target - val
if rec[idx] > 0 {
cnt+=2
rec[idx]
作者: DJYOSHITAKA (Evans)   2024-10-06 10:23:00
别卷了

Links booklink

Contact Us: admin [ a t ] ucptt.com