LeetCode 2748.美丽下标对的数目:模拟

【LetMeFly】2748.美丽下标对的数目:模拟

力扣题目链接:https://leetcode.cn/problems/number-of-beautiful-pairs/

给你一个下标从 0 开始的整数数组 nums 。如果下标对 ij 满足 0 ≤ i < j < nums.length ,如果 nums[i]第一个数字nums[j]最后一个数字 互质 ,则认为 nums[i]nums[j] 是一组 美丽下标对

返回 nums美丽下标对 的总数目。

对于两个整数 xy ,如果不存在大于 1 的整数可以整除它们,则认为 xy 互质 。换而言之,如果 gcd(x, y) == 1 ,则认为 xy 互质,其中 gcd(x, y)xk 最大公因数

 

示例 1:

输入:nums = [2,5,1,4]
输出:5
解释:nums 中共有 5 组美丽下标对:
i = 0 和 j = 1 :nums[0] 的第一个数字是 2 ,nums[1] 的最后一个数字是 5 。2 和 5 互质,因此 gcd(2,5) == 1 。
i = 0 和 j = 2 :nums[0] 的第一个数字是 2 ,nums[2] 的最后一个数字是 1 。2 和 5 互质,因此 gcd(2,1) == 1 。
i = 1 和 j = 2 :nums[1] 的第一个数字是 5 ,nums[2] 的最后一个数字是 1 。2 和 5 互质,因此 gcd(5,1) == 1 。
i = 1 和 j = 3 :nums[1] 的第一个数字是 5 ,nums[3] 的最后一个数字是 4 。2 和 5 互质,因此 gcd(5,4) == 1 。
i = 2 和 j = 3 :nums[2] 的第一个数字是 1 ,nums[3] 的最后一个数字是 4 。2 和 5 互质,因此 gcd(1,4) == 1 。
因此,返回 5 。

示例 2:

输入:nums = [11,21,12]
输出:2
解释:共有 2 组美丽下标对:
i = 0 和 j = 1 :nums[0] 的第一个数字是 1 ,nums[1] 的最后一个数字是 1 。gcd(1,1) == 1 。
i = 0 和 j = 2 :nums[0] 的第一个数字是 1 ,nums[2] 的最后一个数字是 2 。gcd(1,2) == 1 。
因此,返回 2 。

 

提示:

  • 2 <= nums.length <= 100
  • 1 <= nums[i] <= 9999
  • nums[i] % 10 != 0

解题方法:模拟

两层循环模拟 i i i j j j即可。

获得某个数十进制下第一位的方法:

对于整数 n n n,当 n ≥ 10 n\geq 10 n10时不断令 n = ⌊ n 10 ⌋ n=\lfloor\frac{n}{10}\rfloor n=10n,最终的 n n n即为所求。

获得某个数十进制下最后一位的方法:

对于整数 n n n n m o d 10 n\mod 10 nmod10即为所求。

获得两个数的最大公因数的方法:

可用辗转相除法。对于两个数 a a a b b b,令 c = a m o d b c=a\mod b c=amodb

  • c = 0 c=0 c=0 b b b即为所求;
  • 否则令 a , b = b , c a, b = b, c a,b=b,c
  • 时间复杂度 O ( n 2 + n log ⁡ C ) O(n^2+n\log C) O(n2+nlogC),其中 C C C为一个数的最大值
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
class Solution {
private:inline int getFirst(int n) {while (n >= 10) {n /= 10;}return n;}
public:int countBeautifulPairs(vector<int>& nums) {int ans = 0;for (int i = 0; i < nums.size(); i++) {for (int j = i + 1; j < nums.size(); j++) {if (__gcd(getFirst(nums[i]), nums[j] % 10) == 1) {ans++;}}}return ans;}
};
Go
// package mainfunc getFirst(n int) int {for ; n >= 10; {n /= 10;}return n
}func gcd(a int, b int) int {if b == 0 {return a}return gcd(b, a % b)
}func countBeautifulPairs(nums []int) int {ans := 0for i := 0; i < len(nums); i++ {for j := i + 1; j < len(nums); j++ {if gcd(getFirst((nums[i])), nums[j] % 10) == 1 {ans++}}}return ans
}
Java
// import java.math.BigInteger;class Solution {private BigInteger getFirst(int n) {while (n >= 10) {n /= 10;}return BigInteger.valueOf(n);}public int countBeautifulPairs(int[] nums) {int ans = 0;for (int i = 0; i < nums.length; i++) {for (int j = i + 1; j < nums.length; j++) {if (getFirst(nums[i]).gcd(BigInteger.valueOf(nums[j] % 10)).equals(BigInteger.valueOf(1))) {ans++;}}}return ans;}
}
Python
from typing import List
from math import gcd"""
[2,5,1,4]
"""
class Solution:def countBeautifulPairs(self, nums: List[int]) -> int:ans = 0for i in range(len(nums) - 1):for j in range(i + 1, len(nums)):if gcd(ord(str(nums[i])[0]) - ord('0'), nums[j] % 10) == 1:ans += 1return ans

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/139842524

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

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

相关文章

获取真实IP总结

CDN&#xff1a;通过不同地理位置的缓存来加快访问速度&#xff0c;所以我们有可能访问的网口不是真实ip提供的网口。 思路&#xff1a; CDN是要钱的 CDN是基于静态解析的 1、DNS历史记录 找最早的那一条 因为网站刚开始搭建起来的时候&#xff0c;不会直接使用CDN 以下⼏个⽹…

Exposure X7软件安装包下载 丨不限速下载丨亲测好用

根据使用者情况表明Exposure的设计鼓励您进行创造性的工作&#xff0c;使用涂刷和遮罩工具将效果有选择地应用于图片的特定区域&#xff0c;非破坏性图层使您能够混合预设和调整&#xff0c;以获得无尽的外观。我们都知道Exposure是用于创意照片编辑的最佳图片编辑器&#xff0…

Ruby on Rails Post项目设置网站初始界面

在构建了Ruby的Web服务器后&#xff0c;第三步就可以去掉框架的官方页面&#xff0c;设置自己的网页初始页了。 Linux系统安装Ruby语言-CSDN博客 、在Ubuntu中创建Ruby on Rails项目并搭建数据库-CSDN博客、 Ruby语言建立Web服务器-CSDN博客 了解Ruby onRails项目中的主要文件…

OceanBase v4.2 特性解析:支持并发建表,提升OMS导入效率

背景 OceanBase 4.0版本新增了单日志流架构&#xff0c;使得OBServer单机突破了原有的分区数限制&#xff0c;支持更大数量的分区。 很多业务环境为了处理单机数据量过大的问题&#xff0c;通常采取分库分表的方法&#xff0c;这一方法会导致业务需要创建数十万乃至百万级别的…

贪吃蛇——c语言版

文章目录 演示效果实现的基本功能技术要点源代码实现功能GameStart打印欢迎界面和功能介绍绘制地图创建蛇创建食物 GameRun打印提示信息蛇每走一步 GameEnd蛇死亡后继续游戏 演示效果 贪吃蛇1.0演示视频 将终端应用程序改为控制台主机 实现的基本功能 贪吃蛇地图绘制蛇吃食物的…

服务器接收苹果订阅通知

我们的服务器需要提供一个URL来接收苹果的通知&#xff0c;要使用HTTPS。 苹果会对这个URL发送HTTP POST请求&#xff0c;body是JSON格式&#xff0c;包含了通知的内容。 我们服务器处理成功后&#xff0c;应向苹果返回HTTP 200。若出现问题&#xff0c;需要苹果重新发送通知…

apple watch上watchOS网络低级别和高级别区别,以及使用tcp/udp或者websocket的限制条件

可以直接看官方文档&#xff1a;TN3135: Low-level networking on watchOS | Apple Developer Documentation 高级网络&#xff1a;包括 URLSession 中的 HTTP 和 HTTPS 支持&#xff0c;以及在此之上的任何代码层。 低层网络&#xff1a;包括网络框架、 NSStream 和任何其他…

第 402 场 LeetCode 周赛题解

A 构成整天的下标对数目 I 计数&#xff1a;遍历 h o u r s hours hours &#xff0c;记录 h o u r s [ i ] % 24 hours[i]\%24 hours[i]%24 的出现次数 class Solution {public:long long countCompleteDayPairs(vector<int>& hours) {vector<int> cnt(24);…

2024.06.14【读书笔记】丨生物信息学与功能基因组学(第十四章 细菌和古细菌基因组 第四部分)【AI测试版】

读书笔记&#xff1a;《生物信息学与功能基因组学》第十四章 - 第四部分 摘要 第十四章的第四部分聚焦于原核生物基因组的深入分析&#xff0c;探讨了基因组比较学的应用、生物信息学工具在基因组研究中的重要性&#xff0c;以及未来研究方向的展望。 目录 原核生物基因组的…

苹果的后来者居上策略:靠隐私保护打脸微软

01.苹果与微软相比更注重用户隐私 我一直是Windows的忠实用户&#xff0c;但微软疯狂地将人工智能融入一切&#xff0c;让我开始觉得应该咬咬牙换成Mac。 自小我几乎只用Windows电脑&#xff0c;所以我对MacOS一直不太适应。虽然Windows 11有其缺点&#xff0c;但总的来说&am…

Pytorch构建vgg16模型

VGG-16 1. 导入工具包 import torch.optim as optim import torch import torch.nn as nn import torch.utils.data import torchvision.transforms as transforms import torchvision.datasets as datasets from torch.utils.data import DataLoader import torch.optim.lr_…

阿里CEO个人投资的智驾公司,走了不一样的路

佑驾创新在去年8月和11月完成两轮融资&#xff0c;在今年5月底递表港交所&#xff0c;目前拿到了29家车企88款车型的量产订单。自动驾驶赛道不缺明星&#xff0c;这些因素本不足以凸显它的差异化。但是在招股书中&#xff0c;一条特殊的发展路线&#xff0c;却让佑驾创新显得不…

2024.6.20 刷题总结

2024.6.20 **每日一题** 2748.美丽下标对的数目&#xff0c;这道题可以通过暴力求解&#xff0c;也可以使用哈希表来求解&#xff0c;同时通过本题&#xff0c;我发现了C的gcd函数可以直接调用.暴力方法为两重循环遍历&#xff0c;判断他们的gcd是否为1&#xff1b;哈希表的方法…

DB9母头接口定义485

在通信技术中&#xff0c;DB9接口广泛应用于串行通信&#xff0c;尤其是在RS232和RS485标准中。虽然DB9接口最常见于RS232通信&#xff0c;但通过适当的引脚映射&#xff0c;它也可以用于RS485通信。本文将详细介绍如何定义和使用DB9母头接口进行RS485连接。 DB9母头接口简介 …

②-Ⅱ单细胞学习-组间及样本细胞比例分析(补充)

数据加载 ①单细胞学习-数据读取、降维和分群_subset函数单细胞群-CSDN博客‘ #2024年6月20日 单细胞组间差异分析升级# rm(list = ls()) library(Seurat)#数据加载(在第一步已经处理好的数据) load("scedata1.RData")#这里是经过质控和降维后的单细胞数据 tabl…

蓝牙模块在智能城市构建中的创新应用

随着科技的飞速发展&#xff0c;智能城市的概念已经逐渐从理论走向实践。物联网技术作为智能城市构建的核心驱动力&#xff0c;正在推动着城市基础设施、交通管理、环境监测等领域的深刻变革。蓝牙模块&#xff0c;作为物联网技术的重要组成部分&#xff0c;以其低功耗、低成本…

java文件IO操作

前言&#xff1a; java里面的文件操作分为文件系统操作和文件内容操作。文件系统操作主要是针对File这个类来进行操作&#xff0c;而文件内容操作总的来说有四个&#xff1a;Reader&#xff0c;Writer&#xff0c;InputStream&#xff0c;OutputStream&#xff0c;前面两个是通…

CCAA质量管理【学习笔记】​​ 备考知识点笔记(七)质量相关法律法规及《管理体系审核员准则》2021修订3

5、质量管理体系基础考试大纲 3.3法律法规和其他要求 a)《中华人民共和国民法典》第三编 合同&#xff1b; b)《中华人民共和国消费者权益保护法》 c)《中华人民共和国产品质量法》 d) 中国认证认可协会相关人员注册与管理要求 目 录 前 言 第一章 总则 1.1 引言 1.2 适…

重学java 79.JDK新特性 ⑤ JDK8之后的新特性

别怕失败&#xff0c;大不了重头再来 —— 24.6.20 一、接口的私有方法 Java8版本接口增加了两类成员: 公共的默认方法 公共的静态方法 Java9版本接口又新增了一类成员: 私有的方法 为什么IDK1.9要允许接口定义私有方法呢? 因为我们说接口是规范&#xff0c;规范是…

由于找不到msvcp140.dll无法继续执行代码是什么意思,解决msvcp140.dll文件

由于找不到msvcp140.dll无法继续执行代码这种提示&#xff0c;你知道要怎么去处理么&#xff1f;出现这情况&#xff0c;你的程序就代表出现问题了&#xff0c;你会发现打不开&#xff0c;我们需要修复msvcp140.dll文件才能正常的使用程序。今天我们就来聊聊msvcp140.dll找不到…