【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.mzph.cn/pingmian/55765.shtml

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

相关文章

亮度(luminance)

亮度&#xff08;luminance&#xff09;的单位是坎德拉每平方米&#xff08;cd/m&#xff09;。它是用来描述光源或物体表面发出的光在某个方向上的亮度程度。亮度可以简单理解为人眼感知的物体表面在某一特定方向上发出的光强。 亮度的理解&#xff1a; 亮度的概念&#xff…

LabVIEW混合控制器质量检测

随着工业自动化水平的提高&#xff0c;对控制器的精度、稳定性、可靠性要求也在不断上升。特别是在工程机械、自动化生产、风力发电等领域&#xff0c;传统的质量检测方法已无法满足现代工业的高要求。因此&#xff0c;开发一套自动化、精确、可扩展的混合控制器质量检测平台成…

【Linux】常用系统命令

Linux 系统中有许多常用的命令&#xff0c;适用于不同的任务和场景。以下是一些基础且常用的 Linux 命令&#xff1a; 1. **文件和目录操作** - ls&#xff1a;列出目录内容。 - cd&#xff1a;改变当前目录。 - pwd&#xff1a;打印当前工作目录。 - mkdir&#…

Redis 数据类型string(字符串)

目录 1 基本特性 2 主要操作命令 2.1 设置键值 2.1.1 SET key value [EX seconds] [PX milliseconds] [NX|XX] 2.1.2 MSET key value [key value ...] 2.1.3 SETEX key seconds value 2.1.4 PSETEX key milliseconds value 2.1.5 APPEND key value 2.2 获取键值 …

Pikachu-Cross-Site Scripting-xss盲打

xss盲打&#xff0c;不是一种漏洞类型&#xff0c;而是一个攻击场景&#xff1b;在前端、或者在当前页面是看不到攻击结果&#xff1b;而是在后端、在别的页面才看到结果。 登陆后台&#xff0c;查看结果&#xff1b;

Extreme Compression of Large Language Models via Additive Quantization阅读

文章目录 Abstract1. Introduction2. Background & Related Work2.1. LLM量化2.2. 最近邻搜索的量化 3.AQLM:Additive Quantization for LLMs3.1. 概述3.1.0 补充**步骤说明****举例说明** 3.2. 阶段1&#xff1a;代码的波束搜索3.3. 阶段2&#xff1a;码本更新3.4. 阶段3&…

Qt Creator 通过python解释器调用*.py

全是看了大佬们的帖子&#xff0c;结合chatGPT才揉出来。在此做个记录。 安装python在Qt Creator *.pro 文件中配置好环境来个简单的example.py调用代码安装pip添加opencv等库调用包含了opencv库的py代码成功 *.pro配置&#xff1a; INCLUDEPATH C:\Users\xuanm\AppData\Lo…

wordpress在页面中调用另外一个页面的内容

在WordPress中&#xff0c;一个页面调用另一个页面的内容通常不是WordPress设计的直接功能&#xff0c;因为WordPress的页面和内容通常是独立管理的。不过&#xff0c;你可以通过几种方法来实现这一需求&#xff1a; 1. 使用WordPress的短代码(Shortcodes) 你可以创建一个自定…

操作系统中的并发控制——使用条件变量同步

本期主题&#xff1a; 操作系统中的并发控制&#xff0c;条件变量 往期链接&#xff1a; linux设备驱动中的并发操作系统中的多线程问题——原子操作、自旋锁的底层实现操作系统并发控制——使用互斥锁实现同步 操作系统并发控制之条件变量同步 1. 问题描述2. 条件变量的API讲…

Netty的线程模型

Netty的线程模型是其核心特性之一&#xff0c;主要包括以下几个方面&#xff1a; 线程模型概述 作用与重要性&#xff1a;线程模型决定了代码在操作系统、编程语言和框架中的执行方式&#xff0c;对于处理多线程相关的问题至关重要。在网络编程中&#xff0c;合理的线程模型可…

云栖实录 | Hologres3.0全新升级:一体化实时湖仓平台

本文根据2024云栖大会实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a; 姜伟华 | 阿里云智能集团资深技术专家、Hologres 负责人 丁 烨 | 阿里云智能集团产品专家、Hologres 产品负责人 活动&#xff1a; 2024 云栖大会 - 商用大数据计算与分析平台论…

Python中的数据可视化:从入门到进阶

数据可视化是数据分析和科学计算中的重要环节&#xff0c;它通过图形化的方式呈现数据&#xff0c;使复杂的统计信息变得直观易懂。Python提供了多种强大的库来支持数据可视化&#xff0c;如Matplotlib、Seaborn、Plotly等。本文将从基础到进阶&#xff0c;详细介绍如何使用这些…

[单master节点k8s部署]31.ceph分布式存储(二)

Ceph配置 Ceph集群通常是一个独立的存储集群&#xff0c;可以部署在 Kubernetes 集群之外。Ceph 提供分布式存储服务&#xff0c;能够通过 RADOS、CephFS、RBD&#xff08;块存储&#xff09;、和 RGW&#xff08;对象存储&#xff09;等方式与 Kubernetes 集成。即使 Ceph 部…

逼近理论及应用精解【9】

文章目录 全卷积模型定义数学原理与公式架构典型结构应用优点挑战例题 ANNSENet&#xff08;Squeeze-and-Excitation Networks&#xff09;定义数学原理与公式计算定理架构例子例题 ResNet&#xff08;残差网络&#xff09;定义数学原理与公式计算定理算法过程架构例子例题 参考…

PostgreSQL学习笔记五:数据库基本操作

在 PostgreSQL 中&#xff0c;您可以执行一系列基础操作来管理数据库、备份和恢复数据。以下是一些常用的命令和步骤&#xff1a; 创建数据库 使用以下命令创建新数据库&#xff1a; CREATE DATABASE database_name;您也可以在创建时指定数据库所有者和其他参数&#xff1a;…

基于深度学习的手势控制模型

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 1. 项目简…

Nexpose 6.6.271 发布下载,新增功能概览

Nexpose 6.6.271 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Sep 26, 2024 请访问原文链接&#xff1a;https://sysin.org/blog/nexpose-6/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.or…

安全工具 | 搭建带有 Web 仪表板的Interact.sh

介绍 Interactsh 是一个用于检测带外交互的开源工具。它是一种旨在检测导致外部交互的漏洞的工具。本文将主要介绍在子域上设置私有 Interact.sh 服务器以及部署其 Web 应用程序。只需一个 AWS EC2 或 VPS 实例和一个域。 要求 •具有静态IP的AWS EC2 / VPS •拥有自己的域…

实例讲解电动汽车VIN写入规则及Simulink建模方法(三)——VIN设置状态反馈及Simulink建模方法

目录 一、整车VIN设置状态反馈规则 二、整车VIN设置状态反馈设置策略 1、VIN设置状态判定 2、VIN设置状态反馈发送 三、整车VIN设置状态反馈Simulink建模 1、VIN设置状态判定 2、VIN设置状态反馈发送 3、整车VIN设置状态反馈设置完整Simulink模型 四、总结 一、整车VI…

python 实现最短路径广度优先搜索算法

最短路径广度优先搜索算法介绍 最短路径广度优先搜索&#xff08;Breadth-First Search, BFS&#xff09;算法通常不直接用于寻找加权图中的最短路径&#xff0c;因为它在搜索过程中不会考虑边的权重。然而&#xff0c;在无权图中&#xff08;即所有边的权重都相等&#xff09…