3185. Count Pairs That Form a Complete Day II
给一个array hours
任选hours里的两个元素相加,hours[i]+hours[j]
请问可以找到几个组合可以得到complete day?
complete就是hours[i]+hours[j]是24的倍数
思路:
将hours里的每个数除以24
并去记录每个余数出现的次数
(0,0)、(1,23)、(2,22)...(12,12)可以组成complete day
将这些组合出现的次数相加
就可以得到答案了
golang code :
func countCompleteDayPairs(hours []int) int64 {
rec, ans := [24]int{}, 0
for _, val := range hours {
tmp := val % 24
rec[tmp]++
}
ans += rec[0] * (rec[0] - 1) / 2
ans += rec[12] * (rec[12] - 1) / 2
for i := 1; i < 12; i++ {
ans += rec[i] * rec[24-i]
}
return int64(ans)
}