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

相关推荐
R_.L3 小时前
C++:哈希(哈希冲突的解决)
c++·哈希算法
tangchao340勤奋的老年?5 小时前
QTcpSocket(客户端实现)多线程连接慢问题
c++·qt
ElseWhereR6 小时前
机器人能否回到原点 - 简单
c++·算法·leetcode
泛舟起晶浪7 小时前
海底高铁--差分
数据结构·c++·算法
QuantumStack9 小时前
【C++ 真题】P1109 学生分组
java·数据结构·c++·算法
basketball6169 小时前
C++ set容器总结
开发语言·c++
pystraf9 小时前
洛谷 P10463 Interval GCD Solution
数据结构·c++·算法·线段树
我的sun&shine9 小时前
高级数据结构01BST树
数据结构·c++·算法
techdashen10 小时前
性能比拼: Rust vs C++
java·c++·rust
二进制人工智能11 小时前
【QT5 多线程示例】线程池
开发语言·c++·qt