3184. 构成整天的下标对数目 I

给你一个整数数组 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

解题思路:
1.排序数组:首先对输入数组 hours 进行排序。
2.初始化变量:获取数组长度 n,并初始化计数器 ans 为 0。
3.双重循环:使用两个嵌套的 for 循环遍历数组中的每一对元素 (i, j),其中 j > i。
4.条件判断:在内层循环中,检查 (hours[i] + hours[j]) % 24 == 0 是否成立,如果成立则计数器 ans 增加 1。
5.返回结果:循环结束后,返回计数器 ans 的值。

完整代码:
    class Solution {
      public int countCompleteDayPairs(int[] hours) {
          Arrays.sort(hours);
          int n = hours.length;
          int ans = 0;
          for (int i = 0; i < n -1; i++) {
              for (int j = i + 1; j < n; j++){
                  if((hours[i] + hours[j]) % 24 == 0){
                      ans +=1;
                  }
              }
          }
          return ans ;
      }
  }
posted @ 2024-10-22 10:39  JAVA-CHENG  阅读(6)  评论(0编辑  收藏  举报