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

相关推荐
郝学胜-神的一滴1 天前
Qt 高级开发 009: C++ Lambda 表达式
开发语言·c++·qt·软件构建
石山代码1 天前
C++ 轻量级日志系统
开发语言·c++
smj2302_796826521 天前
解决leetcode第3943题递增后的数对数量
数据结构·python·算法·leetcode
王老师青少年编程1 天前
2026年全国青少年信息素养大赛初赛真题(算法应用主题赛C++初中组初赛真题3:文末附答案和解析)
c++·真题·答案·初赛·2026年·青少年信息素养大赛·初中组
轻颂呀1 天前
C++11——并发库介绍
开发语言·c++
梓䈑1 天前
【算法题攻略】快速排序 和 归并排序
数据结构·c++·排序算法
医用门1 天前
医院用门一线品牌
leetcode
fan_music1 天前
设计模式学习
c++·设计模式
小小编程路1 天前
C++ 常用逻辑运算符
开发语言·c++·算法
he___H1 天前
leetcode100-普通数组
java·数据结构·算法·leetcode