首页 > 其他分享 >LeetCode|3185. 构成整天的下标对数目 II(day21)

LeetCode|3185. 构成整天的下标对数目 II(day21)

时间:2024-10-23 22:21:43浏览次数:3  
标签:24 hours cnt hour 复杂度 day21 II 3185 模值

作者:MJ昊

博客:掘金CSDN

公众号:程序猿的编程之路

今天是 昊 的算法之路第21天,今天分享的是LeetCode第3185题构成整天的下标对数目 II的解题思路。这是一道中等难度的题目,主要考察如何高效地统计两个元素之和为 24 的倍数的下标对,通过优化的算法减少时间复杂度。

题目描述简要回顾

给定一个整数数组hours,每个元素代表工作时长。求出有多少(i, j)对,使得hours[i] + hours[j]能被 24 整除(即(i < j)(hours[i] + hours[j]) % 24 == 0)

解题思路

哈希表优化:
我们使用一个长度为 24 的数组cnt,记录每个时长对 24 取模后的频率。对于每个新的元素hour,我们计算它的模值,并查找之前是否存在能与当前模值配对的数值,使它们的和能被 24 整除。

代码实现:

var countCompleteDayPairs = function (hours) {
    let ans = 0;
    let cnt = new Array(24).fill(0); // 用于记录每个模值的频率
    for (let hour of hours) {
        // 找到与当前 hour % 24 互补的模值
        ans += cnt[(24 - (hour % 24)) % 24];
        // 更新当前模值的频率
        cnt[hour % 24]++;
    }
 return ans;
};

复杂度分析

时间复杂度: O(n),遍历一遍数组即可。
空间复杂度: O(1),使用固定大小的数组 cnt。

总结

该解法利用哈希表来优化配对查找,将时间复杂度从 O(n²) 降到了 O(n),更高效地解决了问题。这种思想在很多求两数之和或配对问题中十分常见,是一种经典的空间换时间的策略。

标签:24,hours,cnt,hour,复杂度,day21,II,3185,模值
From: https://blog.csdn.net/Hao_i/article/details/143194630

相关文章

  • 代码随想录-环形链表II
    题目与解析    题目链接:环形链表II本题两个关键点,1、确定有环2、确定环的入口位置 提供两种解法,第一种是我借助了一个辅助的列表来记录指针,空间复杂度O(n)比较无脑 第二种是Carl哥的双指针法,又是套圈问题,虽然很难想,但还是推荐这种方式,这才是算法解法一:publ......
  • 代码随想录算法训练营第八天|leetcode344.反转字符串、leetcode541. 反转字符串II、卡
    1leetcode344.反转字符串题目链接:344.反转字符串-力扣(LeetCode)文章链接:代码随想录视频链接:字符串基础操作!|LeetCode:344.反转字符串_哔哩哔哩_bilibili自己的思路:直接使用python的内置函数reverse进行一个操作1.1自己的代码1.1.1python的内置函数classSolution:......
  • 3185. 构成整天的下标对数目 II
    给你一个整数数组hours,表示以小时为单位的时间,返回一个整数,表示满足i<j且hours[i]+hours[j]构成整天的下标对i,j的数目。整天定义为时间持续时间是24小时的整数倍。例如,1天是24小时,2天是48小时,3天是72小时,以此类推。示例1:输入:hours=[12,12,......
  • Java毕设项目案例实战II 基于移动平台的远程在线诊疗系统(开发文档+数据库+源码)
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在当今数字化时代,医疗行业正经历着前所未......
  • 代码随想录算法训练营day22和day23 | 77. 组合 216.组合总和III 17.电话号码的字母
    学习资料:https://programmercarl.com/回溯算法理论基础.html回溯法backtracking:for循环控制递归数量,暴力搜索:组合、切割、子集、排列、棋盘今天学了组合和切割可以画个N叉树的图来帮助理解回溯过程组合又包括1.单个数组(要加startIndex参数)或多个数组;2.数组内有无重复元素;3.数......
  • 代码随想录算法训练营Day42 | 完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ、
    目录完全背包理论基础518.零钱兑换II377.组合总和Ⅳ卡玛网57.爬楼梯(进阶版)完全背包理论基础题目52.携带研究材料(第七期模拟笔试)题目描述:小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间......
  • 使用PIC单片机驱动OLED模块(软件模拟IIC模式)
    @使用PIC单片机驱动OLED模块(软件模拟IIC模式)使用PIC单片机驱动OLED模块(软件模拟IIC模式)最近学习Microchhip的PIC18系列单片机,使用该款单片机进行一些外设的开发。发现网上的资料很少,故开了此个博客,对自己的学习过程进行一些记录,希望未来国内Microchip的社区能有更多的资源......
  • 代码随想录算法训练营第七天|leetcode454.四数相加II、leetcode383. 赎金信 、leetcod
    1leetcode454.四数相加II题目链接:454.四数相加II-力扣(LeetCode)文章链接:代码随想录视频链接:学透哈希表,map使用有技巧!LeetCode:454.四数相加II_哔哩哔哩_bilibili自己的思路:第一反应就是暴力搜索,一层一层for循环来完成,就是会超时1.1自己的代码纯纯暴力搜索classSolutio......
  • windows IIS上部署Vue项目
    1.首先执行build命令打包vue项目npmrunbuild执行打包命令后生成的文件在dist文件夹内  2.新建web.config写入配置代码,放进打包后文件的根目录内https://blog.csdn.net/weixin_41934979/article/details/139711262<?xmlversion="1.0"encoding="UTF-8"?><configuratio......
  • IIS配置——关于IIS应用程序池回收机制的几项常用设置
    原文:http://bbs.kuaibiao.cn/thread-5857-1-1.html常规设置对启动模式、发生配置更改时禁止回收、固定时间间隔(分钟)、禁用重叠回收、闲置超时(分钟)这几项做一个说明。快速设置:1、打开IIS,在应用程序池上点击右键选择高级设置。2、常规分组下将启动模式选择为AlwaysRunning......