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

Every day a Leetcode

题目来源:3185. 构成整天的下标对数目 II

解法1:哈希

本质思路类同经典的"两数之和"。枚举右,用哈希表维护左。

枚举 j,并维护 cnt[x] 表示所有满足 i < j 的下标 i 中,有几个 hours[i] 模 24 等于 x。设 y = nums[j] % 24,那么答案就是 sum(cnt[(24 - y) % 24])。

注意取余的存在,余 0 的情况要特殊处理。

代码:

c 复制代码
/*
 * @lc app=leetcode.cn id=3185 lang=cpp
 *
 * [3185] 构成整天的下标对数目 II
 */

// @lc code=start
class Solution
{
public:
    long long countCompleteDayPairs(vector<int> &hours)
    {
        vector<int> cnt(24, 0);
        long long ans = 0LL;
        for (int &hour : hours)
        {
            hour %= 24;
            ans += cnt[(24 - hour) % 24];
            cnt[hour]++;
        }
        return ans;
    }
};
// @lc code=end

结果:

复杂度分析:

时间复杂度:O(n+M),其中 n 为数组 hours 的长度,M=24。

空间复杂度:O(M)。

相关推荐
样例过了就是过了9 小时前
LeetCode热题100 螺旋矩阵
算法·leetcode·矩阵
追随者永远是胜利者9 小时前
(LeetCode-Hot100)226. 翻转二叉树
java·算法·leetcode·职场和发展·go
yyjtx9 小时前
DHU上机打卡D27
c++·算法·图论
白太岁9 小时前
C++:(5) 单例模式与支持初始化失败的单例模式
c++·单例模式
hwtwhy10 小时前
【情人节特辑】C 语言实现浪漫心形粒子动画(EasyX 图形库)
c语言·开发语言·c++·学习·算法
日月云棠10 小时前
UE5 打包后 EXE 程序单实例的两种实现方法
前端·c++
XiaoHu020710 小时前
MySQL基础(第一弹)
数据库·c++·mysql
Mr YiRan10 小时前
C++浅拷贝与深拷贝的原理
c++
追随者永远是胜利者11 小时前
(LeetCode-Hot100)200. 岛屿数量
java·算法·leetcode·职场和发展·go
plus4s11 小时前
2月21日(91-93题)
c++·算法