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

相关推荐
努力学算法的蒟蒻20 分钟前
day59(1.18)——leetcode面试经典150
算法·leetcode·职场和发展
程序员-King.24 分钟前
day146—递归—验证二叉搜索树(LeetCode-98)
算法·leetcode·二叉树·递归
iAkuya26 分钟前
(leetcode)力扣100 45二叉树的右视图(dfs,bfs)
leetcode·深度优先·宽度优先
王老师青少年编程29 分钟前
2024年9月GESP真题及题解(C++七级): 矩阵移动
c++·算法·题解·真题·gesp·七级·矩阵移动
txinyu的博客33 分钟前
连接池问题
服务器·网络·c++
初願致夕霞37 分钟前
实现具备C++11现代特性的STL——list篇(使用shared_ptr智能指针实现,解决了循环引用问题)
c++·list
雾岛听蓝39 分钟前
AVL树实现
开发语言·c++
苏宸啊43 分钟前
C++模版template(泛型编程)初阶
c++
郝学胜-神的一滴44 分钟前
Qt自定义TabWidget:实现左侧标签与水平文本布局
开发语言·c++·qt·程序人生
晚风吹长发1 小时前
初步理解Linux中的进程间通信以及管道通信
linux·运维·服务器·c++·进程·通信