LeetCode 每日一题 2748. 美丽下标对的数目

Hey编程小伙伴们👋,今天我要带大家一起解锁力扣上的一道有趣题目—— 美丽下标对的数目 - 力扣 (LeetCode)。这不仅是一次编程挑战,更是一次深入理解欧几里得算法判断互质的绝佳机会!🎉

问题简介

题目要求我们给定一个整数数组 nums,找出所有满足特定条件的下标对。这里的特定条件是:如果 nums[i] 的第一个数字和 nums[j] 的最后一个数字互质,那么我们称这对下标为“美丽下标对”。🌟

互质:数学中的“独行侠”🦸‍♂️

在数学的世界里,如果两个数的最大公约数(GCD)是1,我们称这两个数为互质的。换句话说,它们之间没有其他公共的“朋友”来整除它们,1是它们唯一的公约数。🕵️‍♂️

欧几里得算法:追溯GCD的足迹🔍

欧几里得算法是一种非常高效的计算两个正整数最大公约数的方法。它的基本思想是:两个正整数a和b(假设a>b)的最大公约数与b和a%b(a除以b的余数)的最大公约数相同。🔄

互质的判断逻辑🤔

这里我们深入探讨一下,为什么通过欧几里得算法可以判断两个数是否互质。互质的定义是两个数的最大公约数为1。欧几里得算法的核心在于它递归地将问题规模缩小,直到无法再分。当较小的数变为1时,如果此时较大的数也是1,那么这两个数就是互质的。🔑

算法步骤:
  1. 开始:我们有两个整数a和b,其中a是较大的数。
  2. 计算余数:我们计算a除以b的余数,记为r(即 a % b)。
  3. 递归替换:我们将b的值赋给a,将r的值赋给b,然后重复这个过程。
  4. 结束条件:当b变为0时,a的值就是我们要找的最大公约数。🏁
举个例子:

假设我们要判断35和18是否互质:

  • 我们开始计算35除以18的余数,得到17。🔢
  • 然后我们用18除以17的余数,得到1。🕒
  • 最后,我们用17除以1,余数为0,此时18(原来的b)是1,这意味着35和18的最大公约数是1,所以它们是互质的。🎊

通过这种方式,欧几里得算法不仅帮助我们找到了两个数的最大公约数,也让我们能够判断这两个数是否互质。这是一种既简洁又高效的方法,非常适合在编程中实现。👩‍💻

代码实现(scala)

object Solution {def countBeautifulPairs(nums: Array[Int]): Int = {val pairs = for {i <- nums.indicesj <- (i + 1) until nums.length} yield (i, j)pairs.filter { case (i, j) =>val (firstDigit, secondDigit) = (nums(i).toString.charAt(0).asDigit, nums(j) % 10)gcd(firstDigit, secondDigit) == 1}.length}def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b)}

#算法 #力扣 #质数 #编程技巧

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

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

相关文章

如何制定适合不同行业的新版FMEA培训计划?

在快速变化的市场环境中&#xff0c;失效模式与影响分析&#xff08;FMEA&#xff09;作为一种预防性的质量控制工具&#xff0c;越来越受到企业的重视。然而&#xff0c;不同行业在FMEA应用上存在着明显的差异&#xff0c;因此制定适合不同行业的新版FMEA培训计划显得尤为重要…

Sui主网升级至V1.27.2版本

其他升级要点如下所示&#xff1a; 重点&#xff1a; #17245 增加了一个新的协议版本&#xff0c;并在开发网络上启用了Move枚举。 JSON-RPC #17245: 在返回的JSON-RPC结果中增加了对Move枚举值的支持。 GraphQL #17245: 增加了对Move枚举值和类型的支持。 CLI #179…

kubernetes node 节点管理

kubernetes node 节点管理 1 查看集群信息 kubectl cluster-info 2 查看节点信息 2.1 查看node信息 kubectl get nodes 2.2 查看node细致信息 kubectl get nodes -o wide 2.3 查看node描述详细信息 kubectl describe node <node-name> 2.4 查看节点资源使用情况…

明基的台灯值得入手吗?书客、柏曼真实横向测评对比

如今&#xff0c;近视问题在人群中愈发凸显&#xff0c;据2024年的最新统计数据揭示&#xff0c;我国儿童青少年的近视率已经飙升至惊人的52.7%。在学业日益繁重的背景下&#xff0c;学生们的视力健康成为了社会各界关注的焦点。近视不仅影响视力&#xff0c;还可能引发一系列严…

LeetCode80. 删除有序数组中的重复项 II题解

LeetCode80. 删除有序数组中的重复项 II题解 题目链接&#xff1a; https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/ 题目描述&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素…

渲染农场深度解析:原理理解、配置要点与高效使用策略

许多设计领域的新手可能对“渲染农场”这一概念感到陌生。渲染农场是一种强大的计算资源集合&#xff0c;它通过高性能的CPU和GPU以及专业的渲染引擎&#xff0c;为设计项目提供必要的渲染支持。这种平台由多台计算机或渲染节点组成&#xff0c;形成一个分布式网络&#xff0c;…

从零基础到学完CCIE要多久?

思科认证的CCIE是网络工程师追求的顶级认证之一。 对于刚入门的初学者来说&#xff0c;从零基础到通过CCIE认证&#xff0c;这条路需要多长时间&#xff1f; 这个问题的答案因人而异&#xff0c;取决于多种因素。 这不仅是一个关于时间的问题&#xff0c;更是一个关于规划、学习…

操作系统真象还原:输入输出系统

第10章-输入输出系统 这是一个网站有所有小节的代码实现&#xff0c;同时也包含了Bochs等文件 10.1 同步机制–锁 10.1.1 排查GP异常&#xff0c;理解原子操作 线程调度工作的核心内容就是线程的上下文保护&#xff0b;上下文恢复 。 根本原因是访问公共资源需要多个操作&…

JAVA中的策略模式详解

策略模式&#xff1a;让算法选择更灵活 一、引言 在软件开发中&#xff0c;我们经常会遇到需要根据不同情况选择不同的算法来执行任务的场景。如果将这些算法直接硬编码在类中&#xff0c;会导致类的职责过多&#xff0c;不利于维护和扩展。为了解决这个问题&#xff0c;我们…

【教学类-64-04】20240619彩色鱼骨图(一)6.5*1CM 6根棒子720种

背景需求&#xff1a; 幼儿益智早教玩具❗️鱼骨拼图 - 小红书在家也能自制的木棒鱼骨拼图&#xff0c;你也收藏起来试一试吧。 #母婴育儿 #新手爸妈 #玩具 #宝宝玩具怎么选 #早教 #早教玩具 #幼儿早教 #益智早教 #玩具 #宝宝早教 #益智拼图 #宝宝拼图 #玩不腻的益智玩具 #儿童…

vscode插件开发之 - Treeview视图

一些测试类插件&#xff0c;往往需要加载测试文件&#xff0c;并执行这些测试文件。以playwright vscode为例&#xff0c;该插件可以显示目录下所有的测试文件。如下图所示&#xff0c;显示了tests目录下的所有xxx.spec.js文件&#xff0c;那么如何在vscode插件开发中显示TreeV…

[Python学习篇] Python公共操作

公共运算符 运算符描述支持的容器类型合并字符串、列表、元组*复制字符串、列表、元组in元素是否存在字符串、列表、元组、字典not in元素是否不存在字符串、列表、元组、字典 示例&#xff1a; 字符串 str1 ab str2 cd print(str1 str2) # abcd print(str1 * 3) # ab…

嵌入式中间件_4.嵌入式中间件的主要功能及典型产品

1.嵌入式中间件的主要功能 嵌入式中间件的主要作用是对嵌入式应用屏蔽底层操作系统的异构性。其常用功能有网络通信、存储管理和数据处理等。 &#xff08;1&#xff09;网络通信&#xff1a;嵌入式系统的网络通信中间件是实现整个系统的框架结构和基本的通信接口功能。嵌入式…

Go语言day1

下载go语言的安装程序&#xff1a; All releases - The Go Programming Language 配置go语言的环境变量&#xff1a; 写第一个go语言 在E:\go_workspace当前窗口使用cmd命令: 输入 go run test.go

炭熄卡顿、延迟高、联机报错的解决方法一览

炭熄在制作中巧妙地结合了程序随机生成的元素&#xff0c;为玩家呈现出了一个充满未知与惊险的开放世界&#xff0c;是一款独具匠心的中式民俗恐怖题材游戏。在这款游戏中&#xff0c;玩家将化身为一位意外闯入村子的青年&#xff0c;面对种种鬼怪、努力活下来。游戏将于6月24日…

分页插件结合collection标签后分页数量不准确的问题

问题1:不使用collection 聚合分页正确 简单列子 T_ATOM_DICT表有 idname1原子12原子23原子34原子45原子56原子6 T_ATOM_DICT_AUDIT_ROUTE表审核记录表有 idaudit1拒绝1通过4拒绝 我要显示那些原子审核了,我把两个表inner join 就是那些原子审核过了 idnameaudit1原子1拒绝…

iOS原生APP开发的技术难点

iOS原生APP开发的技术难点主要体现在以下几个方面&#xff0c;总而言之&#xff0c;iOS原生APP开发是一项技术难度较高的工作&#xff0c;需要开发者具备扎实的编程基础、丰富的开发经验和良好的学习能力。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xf…

10个典型的MySQL笔试题和面试题

提供10个典型的MySQL笔试题和面试题作为示例&#xff0c;并给出答案或解释。如果需要更多题目&#xff0c;可以根据这些示例进行扩展或参考相关文档。 1. MySQL是什么&#xff1f; 答案&#xff1a;MySQL是一个关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c…

java如何变更字符串大小写

如果要把所有字符转化为小写&#xff0c;需要用到toLowerCase语句 语法格式是 str.toLowerCase() 如果要把字符转为大写&#xff0c;需要用到语句toUpperCase() public class Stringtransform {public static void main(String[] args) {String str"abc DEF";Sys…

org.springframework.boot:spring-boot-starter-parent:pom:2.3.4.RELEAS

前言 git上拉了一个项目构建过程中无论是clean还是install都报错 注&#xff1a;很看不惯某博主一点简单的经验分享都要开VIP才能查看的作风 org.springframework.boot:spring-boot-starter-parent:pom:2.3.4.RELEASE failed to transfer from https://maven.aliyun.com/rep…