3164. 优质数对的总数 II

news/2024/10/11 10:47:05

给你两个整数数组 nums1 和 nums2,长度分别为 n 和 m。同时给你一个正整数 k。

如果 nums1[i] 可以被 nums2[j] * k 整除,则称数对 (i, j) 为 优质数对(0 <= i <= n - 1, 0 <= j <= m - 1)。

返回 优质数对 的总数。

示例 1:

输入:nums1 = [1,3,4], nums2 = [1,3,4], k = 1

输出:5

解释:

5个优质数对分别是 (0, 0), (1, 0), (1, 1), (2, 0), 和 (2, 2)。

示例 2:

输入:nums1 = [1,2,4,12], nums2 = [2,4], k = 3

输出:2

解释:

2个优质数对分别是 (3, 0) 和 (3, 1)。

解题思路:
今天的题跟昨天的题目是一样的,但是难度提升为中等,也就是说,像昨天那种暴力求解的方式并不适用于今天的这个题目

超时,预期内的结果,那如何优化代码和解决呢?能否将双层循环降低成一次遍历呢?观察案列可以发现,每组数据里的数字是有重复的,那么就可以统计每个元素的出现次数和找到最大值
计算出最大值的好处就是,可以确定 nums2[j] * k 每次递增时是否大于最大,大于这结束循环,没有则判断数组是否值

完整代码:public long numberOfPairs(int[] nums1, int[] nums2, int k) {// 存储nums1中每个元素出现的次数Map<Integer, Integer> count = new HashMap<>();// 存储nums2中每个元素出现的次数Map<Integer, Integer> count2 = new HashMap<>();// nums1中的最大元素值int max1 = 0;// 统计nums1中每个元素的出现次数,并记录最大值for (int num : nums1) {count.put(num, count.getOrDefault(num, 0) + 1);max1 = Math.max(max1, num);}// 统计nums2中每个元素的出现次数for (int num : nums2) {count2.put(num, count2.getOrDefault(num, 0) + 1);}// 结果变量初始化long res = 0;// 遍历nums2中所有元素,寻找符合条件的优质数对for (int a : count2.keySet()) {// 检查每个可能的倍数值是否存在于nums1中// 从a * k 开始,每次增加 a * k,直到超过max1// 这样可以确保遍历所有可能的倍数值for (int b = a * k; b <= max1; b += a * k) {// 如果存在,则累加其组合数量if (count.containsKey(b)) {res += 1L * count.get(b) * count2.get(a);}}}// 返回优质数对的总数return res;}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

bat文件跟参数

bat内容如下@echo off chcp 65001 > nul echo 第一个参数: %1 echo 第二个参数: %2 echo 所有参数: %* echo 批处理文件名: %0 pause ---------------------------------------------------------------------------------------------------------------------…

引领行业数字变革,天翼云出席IDC年度盛典暨颁奖典礼!

近日,2024 IDC中国年度盛典暨颁奖典礼在上海隆重开幕。天翼云出席大会数字工业行业峰会及金融行业峰会,分享了天翼云的智算布局及在行业数字化转型方面的技术探索和实践成果。近日,2024 IDC中国年度盛典暨颁奖典礼在上海隆重开幕。天翼云出席大会数字工业行业峰会及金融行业…

通过命令行检查网站端口是否开通

安装安装入口1WIN +R快捷键 ,输入OptionalFeatures 安装入口2打开控制面板 点击确定即可 如何确认安装成功 WIN+R,输入cmd,打开命令行终端,输入telnet,出现下图说明安装成功 使用1. 开始 例:telnet 192.168.31.100 8080 显示如下信息,证明端口已开启:出现下图说…

Leetcode 839. 相似字符串组【附并查集模板】

1.题目基本信息 1.1.题目描述 如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。 例如,”tars” 和 “rats” 是相似的 (交换 0 与 2 的位置); “rats” 和 “arts” 也是相…

实现远距离通信 PS304数字接口转发器实现UART转换为I2C、SPI、1Wire等多种数字接口!

实现远距离通信 PS304数字接口转发器实现UART转换为I2C、SPI、1Wire等多种数字接口!PS304多种数字接口物理层协议转发器,能够实现UART转换为I2C、SPI、1Wire等其他数字接口,以实现远距离通信。该转发器具备内嵌磁隔离双电源及辅助增强电源电路、自适应线缆算法和强大灵活的S…

简便安装,零要求高度,一体化设计!SD202型拉线地表位移监测设备

简便安装,零要求高度,一体化设计!SD202型拉线地表位移监测设备SD202型拉线地表位移是一种具有一体化密封设计的监测设备。其外观线条流畅美观,安装简便,无需打开机壳,对安装高度没有任何要求。该设备具备无线收发能力,并内置电池和SIM卡,无需额外连接采发模块。因此,它…

Day4 备战CCF-CSP练习

201403-5题目描述 有若干个任务需要在一台机器上运行。 它们之间没有依赖关系,因此可以被按照任意顺序执行。 该机器有两个 CPU 和一个 GPU。 对于每个任务,你可以为它分配不同的硬件资源: 在单个 CPU 上运行。 在两个 CPU 上同时运行。 在单个 CPU 和 GPU 上同时运行。 在两…

Linux安装Jenkins指南

Linux安装Jenkins指南 Jenkins,作为一款开源的自动化服务器,广泛用于持续集成和持续部署(CI/CD)流程中。它提供了强大的插件生态系统,使得集成各种开发工具、版本控制系统和构建工具变得简单高效。本文将详细介绍如何在Linux系统上安装和配置Jenkins。 一、准备工作机器要…