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

相关推荐
进击的荆棘7 小时前
C++起始之路——类和对象(下)
开发语言·c++
liu****7 小时前
10.排序
c语言·开发语言·数据结构·c++·算法·排序算法
快乐的划水a7 小时前
std::thread与pthread关系
c++
_OP_CHEN7 小时前
【算法基础篇】(三十二)动态规划之背包问题扩展:从多重到多维,解锁背包问题全场景
c++·算法·蓝桥杯·动态规划·背包问题·算法竞赛·acm/icpc
Studying 开龙wu8 小时前
Windos 10系统安装OpenPose的CPU版本过程说明和Release版本直接使用
c++·windows
温柔の敲代码8 小时前
从微观到宏观了解C++项目的编译
开发语言·c++
另寻沧海8 小时前
C++ Lambda表达式的隐式转换陷阱
java·c++·算法
菜鸟233号8 小时前
力扣654 最大二叉树 java实现
java·算法·leetcode
好评1248 小时前
C++ 字符串:始于 char*,终于深拷贝
开发语言·c++·stl·字符串
小尧嵌入式8 小时前
QT软件开发知识点流程及记事本开发
服务器·开发语言·数据库·c++·qt