comments | difficulty | edit_url | rating | source | tags | |||
---|---|---|---|---|---|---|---|---|
true |
Medium |
1385 |
Weekly Contest 402 Q2 |
|
Given an integer array hours
representing times in hours, return an integer denoting the number of pairs i
, j
where i < j
and hours[i] + hours[j]
forms a complete day.
A complete day is defined as a time duration that is an exact multiple of 24 hours.
For example, 1 day is 24 hours, 2 days is 48 hours, 3 days is 72 hours, and so on.
Example 1:
Input: hours = [12,12,30,24,24]
Output: 2
Explanation: The pairs of indices that form a complete day are (0, 1)
and (3, 4)
.
Example 2:
Input: hours = [72,48,24,3]
Output: 3
Explanation: The pairs of indices that form a complete day are (0, 1)
, (0, 2)
, and (1, 2)
.
Constraints:
1 <= hours.length <= 5 * 105
1 <= hours[i] <= 109
We can use a hash table or an array
Iterate through the array
After iterating through the array
The time complexity is
class Solution:
def countCompleteDayPairs(self, hours: List[int]) -> int:
cnt = Counter()
ans = 0
for x in hours:
ans += cnt[(24 - (x % 24)) % 24]
cnt[x % 24] += 1
return ans
class Solution {
public long countCompleteDayPairs(int[] hours) {
int[] cnt = new int[24];
long ans = 0;
for (int x : hours) {
ans += cnt[(24 - x % 24) % 24];
++cnt[x % 24];
}
return ans;
}
}
class Solution {
public:
long long countCompleteDayPairs(vector<int>& hours) {
int cnt[24]{};
long long ans = 0;
for (int x : hours) {
ans += cnt[(24 - x % 24) % 24];
++cnt[x % 24];
}
return ans;
}
};
func countCompleteDayPairs(hours []int) (ans int64) {
cnt := [24]int{}
for _, x := range hours {
ans += int64(cnt[(24-x%24)%24])
cnt[x%24]++
}
return
}
function countCompleteDayPairs(hours: number[]): number {
const cnt: number[] = Array(24).fill(0);
let ans: number = 0;
for (const x of hours) {
ans += cnt[(24 - (x % 24)) % 24];
++cnt[x % 24];
}
return ans;
}