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

相关推荐
漫雾_1 天前
两个强制结束进程的方法
c++·驱动开发·安全
HAPPY酷1 天前
C++ 多线程实战三板斧
java·开发语言·c++·技术美术
im_AMBER1 天前
Leetcode 121 翻转二叉树 | 二叉树中的最大路径和
数据结构·学习·算法·leetcode
fpcc1 天前
并行编程实战——CUDA编程的Tile
c++·cuda
_风华ts1 天前
C++ 函数封装与绑定
c++·函数指针·函数封装
ShineWinsu1 天前
对于C++中stack和queue的详细介绍
开发语言·数据结构·c++·面试·stl·queue·stack
L_Aria1 天前
6421. 【NOIP2019模拟11.11】匹配
c++·算法·动态规划
智者知已应修善业1 天前
【PAT乙级真题解惑1012数字分类】2025-3-29
c语言·c++·经验分享·笔记·算法
v_for_van1 天前
力扣刷题记录6(无算法背景,纯C语言)
c语言·算法·leetcode
-To be number.wan1 天前
算法学习日记 | 双指针
c++·学习·算法