
| 🚀 算法题 🚀 |
🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯
| 🚀 算法题 🚀 |


🚩 题目链接
⛲ 题目描述
给你一个整数数组 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 <= 5 * 105
1 <= hours[i] <= 109
🌟 求解思路&实现代码&运行结果
⚡ 模拟
🥦 求解思路
- 用一个一个长度为 24 的数组 cnt 来记录每个小时数模 24 的出现次数。
- 遍历数组 hours,对于每个小时数 x,我们可以得出与 x 相加为 24 的倍数,且模 24 之后的数为 (24−x mod 24) mod 24。累加这个数在哈希表或者数组中的出现次数即可。然后我们将 x 的模 24 的出现次数加一。
- 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {
public long countCompleteDayPairs(int[] hours) {
long ans = 0;
int[] cnt = new int[24];
for (int hour : hours) {
ans += cnt[(24 - hour % 24) % 24];
cnt[hour % 24]++;
}
return ans;
}
}
🥦 运行结果

💬 共勉
| 最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉! |


486

被折叠的 条评论
为什么被折叠?



