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

相关推荐
橘色的喵几秒前
PySide6 工业上位机的实时帧链、零拷贝与跨语言架构
c++·架构·图像·pyside
PTCCTP8 分钟前
CSP2024-J T3小木棍
c++
云深处@26 分钟前
【C++设计模式】命令模式
c++·设计模式·命令模式
wuminyu32 分钟前
JDK21 FFM异步读取MSG_ZEROCOPY错误队列揭秘
java·linux·c语言·jvm·c++
江安下小雨1 小时前
muduo网络库(十三):Buffer 缓冲区类
c++·经验分享
evans在进步2 小时前
LeetCode 53 最大子数组和:一次遍历掌握 Kadane 算法
算法·leetcode·职场和发展
liulilittle2 小时前
XTCP简述
网络·c++·tcp/ip·ip·tcp·通信
一只旭宝2 小时前
预约系统版本2(基于第一版改良)
服务器·数据库·c++
Nil2082 小时前
leetcode 230二叉搜索树中第k小的元素
算法·leetcode·职场和发展
被怪兽吃掉了2 小时前
5.2.1一维组数定义方式
开发语言·c++·算法