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

Every day a Leetcode

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

解法1:哈希

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

枚举 j,并维护 cntx 表示所有满足 i < j 的下标 i 中,有几个 hoursi 模 24 等于 x。设 y = numsj % 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)。

相关推荐
jimy11 小时前
C++ 虚函数表:基类和派生类共用一张 vtable 吗?
开发语言·c++
爱吃提升1 小时前
Dev-C++ 5.11 C++断点调试完整教程
开发语言·c++
xlq223222 小时前
全面复习7
c++
geats人山人海2 小时前
现代c++2.4 虚继承
java·开发语言·c++
csuzhucong2 小时前
天元一号、二号、三号
c++
灯澜忆梦3 小时前
【面向对象编程c++】| 数组与函数
java·数据结构·c++
起个名字费劲死了3 小时前
VisionMaster 十二点标定+单点抓取
c++·visionmaster
Lzg_na5 小时前
僵尸进程、孤儿进程、守护进程:含义、区别与生命周期详解
c++
zhanghaha13145 小时前
C++ 的类是什么(新手保姆讲解,配合 Qt 对照理解)
c++
INGNIGHT5 小时前
593 · 石头游戏 II (区间dp石子合并 翻倍循环问题)
leetcode