本文主要是介绍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 的情况要特殊处理。
代码:
/** @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)。
这篇关于Leetcode3185. 构成整天的下标对数目 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!