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

相关推荐
LYFlied14 小时前
LeetCode热题Top100:核心算法思想与前端实战套路
前端·算法·leetcode·面试·算法思想·算法套路·解题公式
coderxiaohan14 小时前
【C++】红黑树的实现
数据结构·c++·算法
纵有疾風起14 小时前
【C++—STL】哈希表底层封装与unorderedset/unorderedmap模拟实现
开发语言·数据结构·c++·stl·哈希算法·散列表
dangdang___go14 小时前
使用国产AI模型进行“委婉劝学程序”的模拟实现||创建可执行程序营造惊喜感
c语言·c++·豆包·劝学程序开发·创建可执行文件营造惊喜感
coderxiaohan15 小时前
【C++】封装红黑树实现mymap和myset
数据结构·c++·算法
程序员-King.15 小时前
day120—二分查找—统计公平数对的数目(LeetCode-2563)
算法·leetcode·二分查找·双指针
leoufung15 小时前
LeetCode 148:Sort List(链表排序)完整解析:从冒泡到归并
leetcode·链表·list
9ilk15 小时前
【C++】--- 类型转换
开发语言·c++
Yupureki15 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-枚举
c语言·数据结构·c++·算法·visual studio
ULTRA??15 小时前
C++两个数组连接类似python的list相加
c++·python