作者:MJ昊
公众号:程序猿的编程之路
今天是 昊 的算法之路第20天,今天分享的是LeetCode第3184题构成整天的下标对数目 I的解题思路。这是一道简单
难度的题目,考察的是数组元素之间的组合与模运算。
题目描述简要回顾
给定一个整数数组hours
,求满足(hours[i] + hours[j]) % 24 == 0
下标对(i, j)
的数量。每对元素之和若能被 24 整除,则认为它们构成一个完整的“整天”。
解题思路
我们需要找到所有的符合(hours[i] + hours[j]) % 24 == 0
的下标对(i, j)
。
- 朴素方法是使用双重循环枚举所有可能的下标组合,并检查它们的和是否能被 24 整除。
- 这种解法的时间复杂度是 O(n²),适用于数据量较小的情况。
代码实现:
var countCompleteDayPairs = function (hours) { let count = 0; for (let i = 0; i < hours.length - 1; i++) { for (let j = i + 1; j < hours.length; j++) { if ((hours[i] + hours[j]) % 24 == 0) { count++; } } } return count; };
复杂度分析
时间复杂度: O(n²)
,需要枚举所有的下标组合。
空间复杂度: O(1)
,仅使用了常数空间。
总结
该题目主要考察双重循环的使用和模运算的应用。在数据量较小的情况下,直接枚举所有组合是可以接受的。对于更大规模的数据,可以考虑优化,例如使用哈希表统计元素的模值频率,从而将时间复杂度降低到 O(n)。
标签:24,hours,下标,复杂度,day20,3184,let,LeetCode,count From: https://blog.csdn.net/Hao_i/article/details/143170506