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

相关推荐
vKd0Ff21L5 分钟前
如何在Dev-C++中设置TDM-GCC为默认编译器第九十一篇
java·jvm·c++
cany100012 分钟前
C++ -- 型号比对和constexpr
c++
楼田莉子13 分钟前
C++17新特性:结构化绑定/inline变量/if相关的变化
c++·后端·学习
翎沣18 分钟前
C++面向对象三大特性
开发语言·c++
吃着火锅x唱着歌19 分钟前
LeetCode 962.最大宽度坡
算法·leetcode·职场和发展
无限进步_29 分钟前
【C++】C++11的类功能增强与STL变化
java·前端·数据结构·c++·后端·算法
凌波粒38 分钟前
LeetCode--257. 二叉树的所有路径(二叉树)
算法·leetcode·职场和发展
小鱼️遨游1 小时前
openCPU SDK 安装和第一次编译方法、注意事项
c++·opencpu·ml307
basketball6161 小时前
C++ iostream 完全指南:从 cin/cout 到流式编程的奥秘
开发语言·c++
Hua-Jay1 小时前
OpenCV联合C++/Qt 学习笔记(二十二)----相机模型与投影及单目相机标定
c++·笔记·qt·opencv·学习·计算机视觉