leetcode402场周赛——构成整天的下标对数目(javascript)

leetcode402场周赛——构成整天的下标对数目

原始题目链接:
402场周赛

题目描述

给你一个整数数组 hours,表示以 小时 为单位的时间,返回一个整数,表示满足 i < jhours[i] + hours[j] 构成 整天 的下标对 i, j 的数目。

整天 定义为时间持续时间是 24 小时的 整数倍 。

例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推。

示例 1:

输入: hours = [12,12,30,24,24]

输出: 2

解释:

构成整天的下标对分别是 (0, 1) 和 (3, 4)。

示例 2:

输入: hours = [72,48,24,3]

输出: 3

解释:

构成整天的下标对分别是 (0, 1)、(0, 2) 和 (1, 2)。

提示:

1 <= hours.length <= 5 * 105
1 <= hours[i] <= 109

解法一

最简单的解题思路

  1. 首先遍历数组中的每一个元素 hours[i] 。
  2. 对于每个元素,再次遍历后续的元素 hours[j] (其中 j > i )。
  3. 计算 hours[i] + hours[j] 的和,如果这个和能被 24 整除,说明这两个元素构成整天,计数器加 1 。
function countPairs(hours) {let count = 0;  // 用于记录满足条件的下标对数量for (let i = 0; i < hours.length; i++) {for (let j = i + 1; j < hours.length; j++) {if ((hours[i] + hours[j]) % 24 === 0) {  // 如果两数之和能被 24 整除count++;  // 计数器加 1}}}return count;  // 返回满足条件的下标对数量
}let hours1 = [12, 12, 30, 24, 24];
console.log(countPairs(hours1));  // 输出 2let hours2 = [72, 48, 24, 3];
console.log(countPairs(hours2));  // 输出 3

但这样的时间复杂度较高

解法二

解题思路:

  1. 首先创建一个哈希表 countMap 来存储每个小时数除以 24 的余数出现的次数。
  2. 遍历数组 hours ,对于每个小时数 hour ,计算其除以 24 的余数 remainder 。
  3. 计算与 remainder 互补能构成整天的余数 complement (即 24 - remainder ,若 remainder === 0 则 complement = 0 )。
  4. 在哈希表中查找 complement 的出现次数,如果存在,则将其累加到结果计数器 count 中。
  5. 同时,更新当前余数 remainder 在哈希表中的出现次数。
function countPairs(hours) {let count = 0;  // 用于记录满足条件的下标对数量let countMap = {};  // 存储每个余数出现的次数for (let hour of hours) {let remainder = hour % 24;  // 计算余数let complement = remainder === 0? 0 : 24 - remainder;  // 计算互补的余数if (countMap[complement]) {count += countMap[complement];  // 累加互补余数的出现次数}if (countMap[remainder]) {countMap[remainder]++;} else {countMap[remainder] = 1;}}return count;
}

本质上,我们通过countMap这个对象,来存储每个余数出现的次数,从而减少方法一里面的两层遍历,使得只用一次遍历即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 135. 分发糖果(问题分解)

Leetcode 135. 分发糖果 根据描述&#xff0c;可知更多糖果发生在相邻两个孩子的rating更高者中&#xff0c;对于一个孩子来说&#xff0c;左右两侧都视为相邻&#xff0c;即ratings[ i ] > ratings[ i-1 ] 或 ratings[ i ] > ratings[ i1 ]都会令糖果增加 由此则将问题…

手持风扇哪个品牌好?五大手持风扇品牌推荐!

随着炎热夏季的到来&#xff0c;手持风扇已成为人们出行的必备清凉神器。然而&#xff0c;面对市场上众多品牌的手持风扇&#xff0c;如何选择一款既时尚又高效的产品成为了许多消费者的难题。为了解决这个困扰&#xff0c;我们精心挑选了五大手持风扇品牌进行推荐。这些品牌不…

报表控件Stimulsoft 图表轴的日期时间步长模式

Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能&#xff0c;Stimulsoft Ultimate包含了…

Qt|海康摄像头多个页面展示问题

为大家分享一个使用海康摄像头的小功能&#xff0c;希望对大家有用~ 使用场景&#xff1a; 在程序中多个不同功能页面需要展示摄像头的实时预览画面&#xff0c;该如何高效的展示呢&#xff1f; 对于海康摄像头的实时预览接口调用流程&#xff0c;如下所示&#xff1a; 按照流…

JS正则表达式构造函数和正则表达式字面量的区别

背景 笔者在使用正则表达式的过程中&#xff0c;经常看到两种使用方式&#xff0c;比较好奇这两种方式有什么不同。 一种是 正则表达式构造函数&#xff1a;new RegExp(“[xxx]”) 另一种是 正则表达式字面量&#xff1a; /[xxx]/ 于是&#xff0c;就去网上搜了一下…结果看到国…

阿里云ECS(CentOS/Alibaba Cloud Linux)安装最新 Docker 方法

最近&#xff08;6月份&#xff09;我发现 docker 官方无法正常访问&#xff0c;docker pull 命令也执行失败&#xff0c;用 TZ 也一样&#x1f614;。 以下步骤适用于 CentOS 7/8或Alibaba Cloud Linux 系统。 1. 更新系统包 首先&#xff0c;确保您的ECS实例系统软件包是最…

使用nvm管理nodejs版本,设置淘宝NPM镜像源

nvm-windows https://github.com/coreybutler/nvm-windows nvm配置文件的路径 C:\Users\用户名\AppData\Roaming\nvm 修改 settings.txt 文件&#xff0c;添加淘宝镜像源地址 node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors…

leetcode 动态规划(基础版) 使用最小花费爬楼梯

题目&#xff1a; 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费…

【FAS】《Survey on face anti-spoofing in face recognition》

文章目录 原文基于手工设计特征表达的人脸活体检测方法基于深度学习的人脸活体检测方法基于融合策略的人脸活体检测方法人脸检测活体数据库点评 原文 邓雄,王洪春,赵立军等.人脸识别活体检测研究方法综述[J].计算机应用研究,2020,37(09):2579-2585.DOI:10.19734/j.issn.1001-3…

程序员们,能告诉我你们为什么选择arch linux吗?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; Arch Linux 受到程序员青…

IDC发布2023年中国Web应用防火墙市场份额报告

全球范围内针对Web应用的网络攻击从未停止&#xff0c;经验丰富的网络攻击者仍在不断尝试使用更为高效和不易察觉的攻击方式入侵到Web应用内部&#xff0c;利用Web应用的脆弱性进行网络攻击&#xff0c;成为企业敏感数据泄露、内容篡改、业务中断等问题的主要原因&#xff0c;对…

python 操作SQLSERVER数据库的字符集问题

最近遇到了一个问题。 问题描述&#xff1a; python操作SQLSERVER 数据库&#xff0c;含中英文的字段正常显示&#xff0c;对于纯中文的字段&#xff0c;显示为乱码 环境描述&#xff1a; 数据库&#xff1a;sqlserver A表 字符集: chinese_prc_ci_as python: pymssql 连接采用…

ES6 Promise对象

1、概念&#xff1a; 语法上&#xff1a;是一个构造函数&#xff0c;用来生成 Promise 实例&#xff1b;功能上&#xff1a;用来封装一个异步操作&#xff0c;并可以获取起成功或失败的结果值。 2、三种状态&#xff1a; pending 进行中fulfilled 成功的rejected 失败的 3、…

NL2SQL进阶系列(1):DB-GPT-Hub、SQLcoder、Text2SQL开源应用实践详解

1. MindSQL(库) MindSQL 是一个 Python RAG&#xff08;检索增强生成&#xff09;库&#xff0c;旨在仅使用几行代码来简化用户与其数据库之间的交互。 MindSQL 与 PostgreSQL、MySQL、SQLite 等知名数据库无缝集成&#xff0c;还通过扩展核心类&#xff0c;将其功能扩展到 Sn…

实例详解C/C++中static与extern关键字的使用

目录 1、概述 2、编译C++代码时遇到的变量及函数重复定义的问题 3、用 extern 声明外部变量 4、extern与全局函数 5、为何在变量和函数前添加一个static关键字编译就没问题了呢? 6、静态局部变量 7、函数的声明与定义都放置到一个头文件中,不使用static,通过宏控制去…

2024.06.18 刷题日记

76. 最小覆盖子串 这道题目的思路是利用哈希表来存储字符串的字符出现的频率&#xff0c;然后利用滑动窗口来确定是否包含目标串&#xff0c;如果没有包含&#xff0c;就继续滑动右指针。当子串已经包含的时候&#xff0c;就收缩窗口&#xff0c;更新答案&#xff0c;以及右移…

2024年6月记录

1.C/C中typedef的用法大全_C 语言_脚本之家

C#数电票查验的简便方式

数电票&#xff0c;全称全面数字化的电子发票&#xff0c;也被称为数电发票或全电发票。它是与纸质发票具有同等法律效力的全新发票形式&#xff0c;不再以纸质形式存在&#xff0c;而是完全数字化&#xff0c;无需介质支撑&#xff0c;也不需要预先申请领用。现如今&#xff0…

MyBatisPlus可以自动把我们的业务对应的动态代理接口注入到父类baseMapper属性中,因此我们可以省略对应的mapper动态代理接口

MyBatisPlus可以自动把我们的业务对应的动态代理接口注入到父类baseMapper属性中&#xff0c;因此我们可以省略对应的mapper动态代理接口 在service服务实现类中&#xff0c;当我们使用MyBatis框架的时候&#xff0c;那么一般会有一个类似于下面的动态地理接口的显示引入&…

【Java】已解决java.lang.UnsupportedOperationException异常

文章目录 问题背景可能出错的原因错误代码示例正确代码示例注意事项 已解决java.lang.UnsupportedOperationException异常 在Java编程中&#xff0c;java.lang.UnsupportedOperationException是一个运行时异常&#xff0c;通常表示尝试执行一个不支持的操作。这种异常经常发生…