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

相关推荐
Sheep Shaun16 小时前
深入理解红黑树:从概念到完整C++实现详解
java·开发语言·数据结构·c++·b树·算法
楼田莉子16 小时前
CMake学习:入门及其下载配置
开发语言·c++·vscode·后端·学习
夜月yeyue16 小时前
VFS (虚拟文件系统) 核心架构
linux·c++·单片机·嵌入式硬件·架构
踩坑记录16 小时前
leetcode hot100 160.相交链表 easy 链表双指针
leetcode
旭意16 小时前
数据结构-红黑树和set
数据结构·c++·算法·蓝桥杯
无小道16 小时前
基于epoll的单进程Reactor服务器
运维·服务器·c++·网络编程·reactor·epoll
CSDN_RTKLIB16 小时前
对象类型转换与引用类型转换
c++
是娇娇公主~16 小时前
C++集群聊天服务器(4)——网络模块与业务模块
服务器·网络·c++
mjhcsp16 小时前
P14977 [USACO26JAN1] Lineup Queries S(题解)
数据结构·c++·算法
HalvmånEver16 小时前
Linux:信号保存下(信号二)
linux·运维·服务器·c++·学习·信号