Leetcode 100301. 构成整天的下标对数目II
给你一个整数数组 hours,表示以 **小时 **为单位的时间,返回一个整数,表示满足 i < j 且 hours[i] + hours[j] 构成 **整天 **的下标对 i, j 的数目。
**整天 **定义为时间持续时间是 24 小时的 **整数倍 **。
例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推。
把所有数据对 24 取余存储到一个数组中。
对于每一个值找对应的 24 - i 的数目,进行相乘得到结果。对于 0 和 12 要特殊考虑。
完整代码
class Solution {
public long countCompleteDayPairs(int[] hours) {
long[] times = new long[24];
for (int hour : hours) {
times[hour % 24]++;
}
long res = 0;
// 0 和 12
if (times[0] > 1) {
res += (times[0] * (times[0] - 1)) / 2;
}
if (times[12] > 1) {
res += (times[12] * (times[12] - 1)) / 2;
}
for (int i = 1; i < 12; i++) {
if (times[i] > 0 && times[24 - i] > 0) {
res += times[i] * times[24 - i];
}
}
return res;
}
}