【LeetCode】每日一题 2024_10_10 优质数对的总数 I(暴力/哈希)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:优质数对的总数 I

代码与解题思路

简单题先暴力~

直接对着题意模拟即可,力扣上只要是标着简单标签的题目,不用犹豫,直接对他使用暴力吧!

func numberOfPairs(nums1 []int, nums2 []int, k int) (ans int) {// 简单题先暴力for _, v1 := range nums1 {for _, v2 := range nums2 {if v1 % (v2*k) == 0 {ans++}}}return ans
}

除了暴力,有没有更好的解法呢?

这是一道力扣周赛的题目,除了简单版本,还有加强了数据的版本,如果没法使用 O(n * m)的复杂度,如何实现线性的题解?

来看代码

func numberOfPairs(nums1 []int, nums2 []int, k int) (ans int64) {// 同样的题目,加强的数据范围cnt1 := map[int]int{}mx := 0for _, v := range nums1 { // 给每一个能整除 k 的值计数if v%k == 0 {cnt1[v/k]++mx = max(mx, v/k) // 记录 nums1 中能整除 k 的最大数}}if len(cnt1) == 0 { // 没有能整除 k 的数return 0}cnt2 := map[int]int{}for _, v := range nums2 { // 给 nums2 中的每一种数字计数cnt2[v]++}// 为什么可以通过枚举倍数来做?// 举例:3 % 1 == 0,3 为什么能整除 1,因为 3 是 1 的倍数// 1 的倍数有 1、2、3 等等,所以他能被 1、2、3 整除// 这也就意味着,我们只需要枚举一个数的倍数,就能得到所有能整除他的值。// 也就是我们将 nums2 中的值的所有倍数枚举一遍,和 nums1 中能整除 k 的值进行比较// 然后根据他们的数量相乘计算数对的数量,就能得到题目要求的结果 for k, v := range cnt2 { // 枚举 nums2 中的每一个数字和他们的数量cnt := 0for t := k; t <= mx; t += k { // 枚举这每一个数字的倍数cnt += cnt1[t] // 如果和 nums1 中的值能对应,就记录}ans += int64(cnt*v) // nums1 中该值的数量 * nums2 中该值的数量 = 该值能整除的优质数对数}return ans
}

解题逻辑:

1、给 nums1 每一个能整除 k 的值计数

2、记录 nums2 中每一个种数字的个数

3、枚举 nums2 中每一种数字的倍数,并累加解得优质数对的总数

核心问题:(注释也有简略提到)

为什么可以这么做?或者说,为什么可以通过枚举 nums2 中每一种数字的倍数来解得题目要求的优质数对的总数?

题目中说: nums1[i] 可以被 nums2[j] * k 整除,就是一个优质的数对,也就是说可以转换成:nums[i] / k 可以被 nums2[j] 整除

举个例子:3 可以被 1 整除,3 为什么可以被 1 整除?因为 3 是 1 被倍数。1 的倍数有 1、2、3 . . .,所以 1 能被 1,2,3 整除,也就说,只要我们枚举 1 的倍数,就能找到什么 1 能被什么值整除了

我们将 nums1 中能整除的值计数,nums2 中的值计数,通过枚举 nums2 中值的倍数,找到对应能的 nums1 中的值,再相乘,就能得到题目要求的优质数对的总数了。

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。

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

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

相关文章

Unity 从零开始的框架搭建1-2 事件的发布-订阅-取消的小优化及调用对象方法总结[半干货]

该文章专栏是向QFrameWork作者凉鞋老师学习总结得来&#xff0c;吃水不忘打井人&#xff0c;不胜感激 Unity 从零开始的框架搭建1-1 unity中对象调用的三种方式的优缺点分析【干货】-CSDN博客 原来 其实就是对上一节的事件发布订阅类的小优化&#xff0c;原来是这样子的 p…

转行在大模型公司做Prompter是种怎样的体验

2014-2019&#xff1a;安徽双非-城乡规划-本科 2019-2022&#xff1a;南京985-城市规划-硕士 工作经历 2022.07-2023.07&#xff1a;设计院做城市设计&#xff1b; 2023.08-至今&#xff1a;国内大模型公司prompter&#xff08;提示词工程师&#xff09; 01 2022年刚毕业…

IDEA使用Maven创建父与子多模块项目

在 IntelliJ IDEA 中使用 Maven 创建父与子多模块项目是一个常见的开发实践&#xff0c;有助于更好地组织和管理代码。在多模块项目中&#xff0c;可以将公共的代码、资源或配置抽离到独立的模块中&#xff0c;然后在其他模块中直接引用。这样可以避免代码重复&#xff0c;提高…

第十一章:规划过程组 (11.1制定项目管理计划--11.5创建WBS)

11.1 制定项目管理计划 • 项目管理计划可以是概括或详细的&#xff0c;每个组成部分的详细程度取决于具体项目的要求 • 项目管理计划应基准化&#xff0c;即至少应规定项目的范围、时间和成本方面的基准以便据此考核项目执行情况和管理项目绩效。 • 在确定基准之前&#xf…

汽车胶黏剂市场研究:预计2030年全球市场规模将达到67.4亿美元

汽车胶黏剂是指专门用于汽车制造和维修过程中&#xff0c;用于粘接、密封和固定各种汽车部件的化学材料。它们在汽车行业中扮演着关键角色&#xff0c;广泛应用于车身、内饰、玻璃、电子元件和其他组件的粘接与密封。汽车胶黏剂旨在提高汽车的结构强度、耐用性、密封性以及舒适…

Spark第一天

MapReduce过程复习 Spark由五部分组成 RDD五大特征 1、 Spark -- 代替MapReduce <<<<< scala是单机的&#xff0c;spark是分布式的。>>>>> 开源的分布式计算引擎 可以快速做计算 -- 因为可以利用内存来做一些计算 (1) 分为5个库(模块) : 1、…

打不死的超强生命力

水熊虫是你可能听说过的小生物&#xff0c;它们能够在极端环境中生存&#xff0c;堪称地球上的“超强幸存者”。数十年来&#xff0c;科学家们试图通过各种极端实验杀死它们&#xff0c;但无论是把它们以900米/秒的速度发射&#xff0c;还是将它们暴露在宇宙辐射下&#xff0c;…

Linux系统本地搭建轻量级文件共享系统PicoShare远程连接实战

前言 本篇文章介绍&#xff0c;如何在Linux系统本地部署轻量级文件共享系统PicoShare&#xff0c;并结合Cpolar内网穿透实现公网环境远程传输文件至本地局域网内文件共享系统。 PicoShare 是一个由 Go 开发的轻量级开源共享文件系统&#xff0c;它没有文件限制&#xff0c;允…

CDGA|数据治理:企业创新发展的强劲引擎

在当今这个数据驱动的时代&#xff0c;企业之间的竞争已经悄然转变为对数据资源的争夺与利用能力的比拼。数据&#xff0c;作为新的生产要素&#xff0c;正以前所未有的速度改变着企业的运营模式、决策方式乃至整个商业生态。而数据治理&#xff0c;作为确保数据质量、安全性、…

FPGA上板调试方式总结----VIO/ILA

在Vivado中&#xff0c;VIO&#xff08;Virtual Input/Output&#xff09;是一种用于调试和测试FPGA设计的IP核&#xff0c;它允许设计者通过JTAG接口实时读取和写入FPGA内部的寄存器&#xff0c;从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口&#x…

二叉树系列(遍历/dfs/bfs)10.10

一、二叉树的右视图(遍历) 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 &#xff08;如果右子树为空的话&#xff0c;那么右视图中看到的就是左子树的节点&#xff09; bfs层…

IPguard与Ping32 DLP能力对比,保护企业数据的最佳选择

在信息安全的背景下&#xff0c;数据丢失防护&#xff08;DLP&#xff09;解决方案已成为企业不可或缺的一部分。IPguard和Ping32是市场上两款功能强大的DLP产品。本文将对它们的DLP能力进行详细对比&#xff0c;帮助企业找到最适合自己的数据保护工具。 Ping32的独特之处 Pin…

java复制查询数组-cnblog

java数组 复制数组 copyOf(待复制数组,复制后新数组的长度) 如果复制后数组的长度&#xff0c;长于原来数组&#xff0c;多出来的元素会被补0&#xff0c;如果新数组元素少会从第一个元素&#xff0c;取到指定元素长度 package nb;import java.util.Arrays;public class co…

2024年,有多少程序员被迫转行?真是惨烈啊!

知乎有个很火热的帖子&#xff0c;很多人在讨论今年有多少程序员在被迫转行&#xff0c;原来今年的程序员这么难。 有个老哥说自己干了8年前端程序员&#xff0c;今年被裁之后&#xff0c;薪资从30K降到25K还是没找到工作&#xff0c;现在只能转行去卖保险。 还有一个38岁的老哥…

深度解析|生成式人工智能大模型备案全流程

一、大模型备案的含义 根据《生成式人工智能服务管理暂行办法》第十七条 提供具有舆论属性或者社会动员能力的生成式人工智能服务的&#xff0c;应当按照国家有关规定开展安全评估。这里所说的按照国家有关规定开展安全评估&#xff0c;其实就是生成式人工智能服务备案&#x…

Python_网络编程(IP 端口 协议)

网络编程&#xff1a; 互联网时代&#xff0c;现在基本上所有的程序都是网络程序&#xff0c;很少有单机版的程序了。网络编程就是如何在程序中实现两台计算机的通信。Python语言中&#xff0c;提供了大量的内置模块和第三方模块用于支持各种网络访问&#xff0c;而且Python语言…

JAVA毕业设计187—基于Java+Springboot+vue3的电动车销售管理系统(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3的电动车销售管理系统(源代码数据库)187 一、系统介绍 本项目前后端分离(可以改为ssm版本)&#xff0c;分为用户、管理员两种角色 1、用户&#xff1a; 注…

不用PS!patchwork快速解决多子图组合问题~~

如果现在你还是将自己制作的图表放在PS或者PPT中进行随意组合的化&#xff0c;那么这篇文章你就得好好看看了&#xff0c;今天小编就给大家安利一个超强的突变自由组合包-patchwork&#xff0c;让你轻松实现多图的自由组合。 更多详细的数据可视化教程&#xff0c;可订阅我们的…

科研绘图系列:R语言绘制中国地理地图

文章目录 介绍加载R包导入数据图a图b图c图d系统信息介绍 文章提供了绘制图a,图b和图d的数据和代码。该图展示了不同省份的物种分布情况。 加载R包 library(geojsonsf) library(sf) library(ggplot2) library(RColorBrewer) library(ggspatial) library(</

Springboot网上书城小程序—计算机毕业设计源码38707

目 录 摘要 1 绪论 1.1 研究背景及意义 1.2国内外研究现状 1.3系统开发的内容 1.4论文结构与章节安排 1.5小程序框架以及目录结构介绍 2 网上书城小程序系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析…