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

相关推荐
一只旭宝3 分钟前
【C加加入门精讲15】:IO流缓冲区、字符串流、缓冲流及STL vector容器零基础实战教程一、博客前言
开发语言·c++
alwaysrun3 分钟前
C++之高性能跨平台日志库spdlog
c++·后端·编程语言
我不是懒洋洋6 分钟前
手写数字识别:从零实现一个卷积神经网络(CNN)
c++
人道领域6 分钟前
【LeetCode刷题日记】106.从遍历序列重建二叉树:手撕递归边界,彻底搞懂左闭右闭 vs 左闭右开
java·算法·leetcode
BestOrNothing_201516 分钟前
C++零基础到工程实战(5.1):初识函数—定义调用、参数返回值、栈区内存与变量作用域分析
c++·生命周期·作用域·变量·函数·栈内存
运筹vivo@17 分钟前
LeetCode 2540. 最小公共值
算法·leetcode·职场和发展
阿文的代码库18 分钟前
如何在C++中使用标准库的智能指针
开发语言·c++·算法
郝学胜-神的一滴21 分钟前
Qt 高级开发 008: 使用QSetting记住上次打开路径
开发语言·c++·qt·开源软件
kyle~29 分钟前
机器人感知 --- 多相机传感时间误差分析
linux·c++·数码相机·机器人·ros2·传感器
周末也要写八哥31 分钟前
C++变参模板之空参包的特殊情况
java·开发语言·c++