【LetMeFly】3184.构成整天的下标对数目 I:暴力模拟(下一题再用哈希表)
力扣题目链接:https://leetcode.cn/problems/count-pairs-that-form-a-complete-day-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
解题方法:模拟
两层循环,第一层循环遍历数组的每个元素,第二层循环从第一层循环的元素的下一个元素开始遍历,如果两数之和是24的倍数,则答案数量加一。
- 时间复杂度 O ( l e n ( h o u r s ) 2 ) O(len(hours)^2) O(len(hours)2)
- 空间复杂度 O ( 1 ) O(1) O(1)
AC代码
C++
class Solution {
public:int countCompleteDayPairs(vector<int>& hours) {int ans = 0;for (int i = 0; i < hours.size(); i++) {for (int j = i + 1; j < hours.size(); j++) {ans += (hours[i] + hours[j]) % 24 == 0;}}return ans;}
};
Go
package mainfunc countCompleteDayPairs(hours []int) int {ans := 0for i, h1 := range hours {for j := i + 1; j < len(hours); j++ {if (h1 + hours[j]) % 24 == 0 {ans++}}}return ans
}
Java
class Solution {public int countCompleteDayPairs(int[] hours) {int ans = 0;for (int i = 0; i < hours.length; i++) {for (int j = i + 1; j < hours.length; j++) {ans += (hours[i] + hours[j]) % 24 == 0 ? 1 : 0;}}return ans;}
}
Python
from typing import Listclass Solution:def countCompleteDayPairs(self, hours: List[int]) -> int:return sum((hours[i] + hours[j]) % 24 == 0 for i in range(len(hours)) for j in range(i + 1, len(hours)))# if __name__ == '__main__':
# l = ((i, j) for i in range(3) for j in range(3))
# for i, j in l:
# print(i, j)
# """
# 0 0
# 0 1
# 0 2
# 1 0
# 1 1
# 1 2
# 2 0
# 2 1
# 2 2
# """
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/143166228