给你一个整数数组
hours
,表示以 小时 为单位的时间,返回一个整数,表示满足i < j
且hours[i] + hours[j]
构成 整天 的下标对i
,j
的数目。整天 定义为时间持续时间是 24 小时的 整数倍 。
例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推。
示例 1:
输入: hours = [12,12,30,24,24]
输出: 2
解释:
构成整天的下标对分别是
(0, 1)
和(3, 4)
。示例 2:
输入: hours = [72,48,24,3]
输出: 3
解释:
构成整天的下标对分别是
(0, 1)
、(0, 2)
和(1, 2)
。提示:
1 <= hours.length <= 100
1 <= hours[i] <= 109
暴力解法
5min
public int countCompleteDayPairs(int[] hours) {
int count = 0;
int n = hours.length;
// 使用两个嵌套的循环,以确保 i < j
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if ((hours[i] + hours[j]) % 24 == 0) {
count++;
}
}
}
return count;
}
--------------------------------------------------------
public int countCompleteDayPairs(int[] hours) {
int slowpoint = 0;
int fastpoint = 1;
int i = 0;
//如果慢指针到终点了,再不停止会遍历空指针异常
while(slowpoint != hours.length-1){
//先设置终止条件
if((hours[slowpoint] + hours[fastpoint])%24 == 0){
i++;
}
if(fastpoint == hours.length - 1){
slowpoint += 1;
fastpoint = slowpoint+1;
}else{
fastpoint += 1;
}
}
return i;
}