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

相关推荐
QiLinkOS6 分钟前
合肥气链科技有限公司本质总结
c++·科技·算法·gitee·开源
Yuk丶8 分钟前
厌倦了假AI对话?本地 LLM 语音对话 + 口型同步系统 2.0(已开源!)
c++·人工智能·语言模型·开源·ue4·语音识别·游戏开发
kyle~18 分钟前
ROS2---零拷贝
linux·c++·机器人·ros2
Ricky_Theseus21 分钟前
栈 & 队列 应用场景
数据结构·c++
ysu_031421 分钟前
leetcode数据结构与算法5~7:链表双指针与二级指针
数据结构·学习·算法·leetcode·链表
薇茗21 分钟前
【C++】类与对象 核心篇
开发语言·c++
ouliten23 分钟前
C++笔记:偏现代C++日志系统
c++·笔记
猪脚饭还是好吃的23 分钟前
【分享】C4droid 安卓C++编译器 手机编程超便捷
android·c++·智能手机
草莓熊Lotso23 分钟前
【Linux网络】深入理解传输层 UDP 协议:从底层原理到实战应用
linux·运维·服务器·c语言·网络·c++·udp
小欣加油25 分钟前
leetcode542 01矩阵
数据结构·c++·算法·leetcode·矩阵·bfs