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

相关推荐
YuTaoShao2 分钟前
【LeetCode 每日一题】1984. 学生分数的最小差值
算法·leetcode·排序算法
wen__xvn15 分钟前
基础算法集训第06天:计数排序
数据结构·算法·leetcode
却道天凉_好个秋18 分钟前
c++ 四叉树
c++·hevc·四叉树
王老师青少年编程18 分钟前
信奥赛C++提高组csp-s之倍增算法思想及应用(2):LCA
c++·lca·csp·信奥赛·csp-s·提高组·倍增算法
CSDN_RTKLIB19 分钟前
【编码实战】源文件不同编码控制台输出过程
c++
Ll130452529820 分钟前
Leetcode哈希表篇
算法·leetcode·散列表
鱼跃鹰飞29 分钟前
LeetCode热题100: 49.字母异位词分组
java·数据结构·算法·leetcode
一叶之秋141238 分钟前
告别浅层调用:深入模拟实现STL Stack/Queue/Priority_Queue,知其所以然
c++·stl
wen__xvn1 小时前
基础算法集训第17天:二分查找
算法·leetcode·职场和发展
耶耶耶耶耶~1 小时前
关于软件开发的一些思考
c++