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)。

相关推荐
geovindu6 分钟前
CSharp: Dijkstra Algorithms
开发语言·后端·算法·c#
学逆向的30 分钟前
汇编——位运算
开发语言·汇编·算法·网络安全
可编程芯片开发44 分钟前
基于simulink的PEM燃料电池控制系统建模与仿真,对比PID,积分分离以及滑模控制器
算法
学究天人1 小时前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(卷2)
算法·数学建模·动态规划·图论·抽象代数·拓扑学
玛卡巴卡ldf2 小时前
【LeetCode 手撕算法】(细节知识点总结)
java·数据结构·算法·leetcode·力扣
wanzehongsheng2 小时前
零碳产业园光伏园区光伏电站追踪对比固定:发电增益技术边界分析
算法·光伏发电·光伏·零碳园区·太阳能追光·低碳环保·追踪电站
KobeSacre2 小时前
CyclicBarrier 源码
java·jvm·算法
手写码匠2 小时前
注意力机制全家桶:从 Multi-Head 到 GQA 再到 Flash Attention 的手写实现
人工智能·深度学习·算法·aigc
大鱼>3 小时前
模型公平性与偏差检测:AI伦理实战指南
人工智能·深度学习·算法·机器学习
学究天人3 小时前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(卷3.2)
线性代数·算法·机器学习·数学建模·动态规划·抽象代数·拓扑学