LeetCode 3185.构成整天的下标对数目II

给你一个整数数组 hours,表示以 小时 为单位的时间,返回一个整数,表示满足 i < j 且 hoursi + hoursj 构成 整天 的下标对 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^55

1 <= hoursi <= 109^99

枚举hours,将数值取余保存在哈希表中,枚举时在哈希表里检查是否有构成整天的数对:

cpp 复制代码
class Solution {
public:
    long long countCompleteDayPairs(vector<int>& hours) {
        long long ans = 0;

        unordered_map<int, int> cnt;

        for (int i = 0; i < hours.size(); ++i) {
            int target = (24 - hours[i] % 24) % 24;
            if (cnt.find(target) != cnt.end()) {
                ans += cnt[target];
            }

            ++cnt[hours[i] % 24];
        }

        return ans;
    }
};

如果hours的长度为n,则此算法时间复杂度为O(n),空间复杂度为O(1)。

相关推荐
NEFU_Jyj4 小时前
牛客周赛R168
算法
文丑颜不良啊12 小时前
LeetCode2221~2240题目解析
java·leetcode
Navigator_Z12 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
D e re k ZH13 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶13 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
文丑颜不良啊14 小时前
LeetCode2161~2180题目解析
java·leetcode
雪落漂泊14 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
文丑颜不良啊15 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发16 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview