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

相关推荐
li星野15 小时前
滑动窗口五题通关:从最小覆盖子串到水果成篮(Python + C++)
c++·python·学习
Sylvia33.15 小时前
足球数据API接入实战:从认证到实时比分推送的完整指南
java·开发语言·前端·c++·python
时空自由民.15 小时前
C/C++ volatile关键字原理及应用介绍
java·c语言·c++
我头发还没掉光~15 小时前
P4147 玉蟾宫
数据结构·c++·算法
江屿风16 小时前
【c++笔记】类和对象流食般投喂(上)
开发语言·c++·笔记
是个西兰花16 小时前
单列模式和C++中的类型转换
c++·单例模式·设计模式·rtti
诙_16 小时前
C++代码实践应用
开发语言·c++
Little At Air16 小时前
LinuxOS阻塞队列模型(单生产者单消费者)
linux·数据结构·c++
念恒1230616 小时前
基础IO(一切皆文件)
linux·c语言·c++·算法
铁皮哥17 小时前
【力扣题解】LeetCode 25. K 个一组翻转链表
java·数据结构·windows·python·算法·leetcode·链表