Leetcode3185. 构成整天的下标对数目 II

Every day a Leetcode

题目来源:3185. 构成整天的下标对数目 II

解法1:哈希

本质思路类同经典的"两数之和"。枚举右,用哈希表维护左。

枚举 j,并维护 cntx 表示所有满足 i < j 的下标 i 中,有几个 hoursi 模 24 等于 x。设 y = numsj % 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)。

相关推荐
雾沉川2 小时前
Visual C++ 运行库合集 v105.0 部署与故障排查技术指南
开发语言·c++·dll
丘山望岳2 小时前
剑起霜华——平衡二叉树(AVL树 )精讲
开发语言·数据结构·c++
Boom_Shu2 小时前
浅拷贝与深拷贝
开发语言·c++·算法
Mortalbreeze3 小时前
C++ Lambda表达式详解:从捕获列表到底层原理
开发语言·c++
为何创造硅基生物3 小时前
LVGL
c++·ui
只做人间不老仙3 小时前
C++ grpc 拦截器示例学习
开发语言·c++·学习
qeen873 小时前
【C++】类与对象之零散知识点补充(四)
c++·笔记·学习·语法
Irissgwe4 小时前
顺序表和链表
数据结构·c++·链表·c·顺序表·线性表
牛油果子哥q4 小时前
二叉树(Binary Tree)零基础精讲,树基础概念、树形分类、核心性质、递归/层序遍历、完整代码与面试考点全解
c++·面试·数据挖掘
玖玥拾4 小时前
C/C++ 数据结构(四)链表与STL容器
c语言·数据结构·c++·链表·stl库