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

相关推荐
诙_19 分钟前
C++学习总结
开发语言·c++·学习
XX風22 分钟前
VSCode + CMake + C++:配置文件体系完整说明
c++·ide·vscode
闻缺陷则喜何志丹29 分钟前
【C++动态规划】B3734 [信息与未来 2017] 加强版密码锁|普及+
c++·算法·动态规划·洛谷
是娇娇公主~29 分钟前
力扣——105. 从前序与中序遍历序列构造二叉树详解
算法·leetcode·哈希算法
承渊政道31 分钟前
【贪心算法】(经典实战应用解析(三):K次取反后最⼤化的数组和、按⾝⾼排序、优势洗牌、最⻓回⽂串、增减字符串匹配)
数据结构·c++·学习·算法·贪心算法·线性回归·哈希算法
凌波粒36 分钟前
LeetCode--100.相同的树(二叉树)
算法·leetcode·职场和发展
alexwang21136 分钟前
P16473 [GKS 2013 #B] Sudoku Checker题解
c++·算法·题解·洛谷
一条鱼头37 分钟前
c++11语法点
开发语言·c++
Peter·Pan爱编程38 分钟前
C++中的 const 与 volatile:比C强大十倍
c++·const·volatile·c++基础
lihao lihao39 分钟前
MFC知识点
c++·mfc