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

相关推荐
木心爱编程几秒前
Qt C++ Excel 文件解析与导出实战:QAxObject 封装工具类
c++·qt·数据库开发
爱装代码的小瓶子1 分钟前
【c++知识铺子】map和set的底层-红黑树
java·开发语言·c++
雪域迷影5 分钟前
macOS中使用cJSON解析库解析JSON
c++·macos·json·c·cmake·pkg-config
青山的青衫7 分钟前
【优先级队列(堆)+排序】LeetCode hot100+面试高频
算法·leetcode·面试
江湖人称贺行风8 分钟前
C++八股
c++·八股
枫叶丹411 分钟前
【Qt开发】Qt窗口(八) -> QFileDialog 文件对话框
c语言·开发语言·数据库·c++·qt
前端小白在前进18 分钟前
★力扣刷题:LRU缓存
spring·leetcode·缓存
qq_4798754320 分钟前
深入解析 Protobuf 消息的分帧 (Framing) 与编码 (Codec)
linux·c++
chenyuhao202424 分钟前
Linux系统编程:进程控制
linux·运维·服务器·开发语言·c++·后端
落羽的落羽29 分钟前
【Linux系统】进程终止、进程等待与进程替换的概念与实现
linux·服务器·c++·人工智能·深度学习·机器学习·游戏引擎