【力扣周赛】第351场周赛

news/2025/2/11 3:09:07/

【力扣周赛】第351场周赛

    • 6466. 美丽下标对的数目
      • 题目描述
      • 解题思路
    • 6910. 将数组划分成若干好子数组的方式
      • 题目描述
      • 解题思路

6466. 美丽下标对的数目

题目描述

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

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

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

示例 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[1] 的最后一个数字是 1 。2 和 5 互质,因此 gcd(2,1) == 1 。
i = 1 和 j = 2 :nums[0] 的第一个数字是 5 ,nums[1] 的最后一个数字是 1 。2 和 5 互质,因此 gcd(5,1) == 1 。
i = 1 和 j = 3 :nums[0] 的第一个数字是 5 ,nums[1] 的最后一个数字是 4 。2 和 5 互质,因此 gcd(5,4) == 1 。
i = 2 和 j = 3 :nums[0] 的第一个数字是 1 ,nums[1] 的最后一个数字是 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[1] 的最后一个数字是 2 。gcd(1,2) == 1 。
因此,返回 2 。

提示:

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

解题思路

思路:最直观的想法是,使用first记录每个数字的第一位,使用last记录每个数字的最后一位,然后两层循环,判断gcd(first[i],last[j])是否等于1。

class Solution {
public:int countBeautifulPairs(vector<int>& nums) {int n=nums.size();//存储数字第一位vector<int> first(n);//存储数字最后一位vector<int> last(n);for(int i=0;i<n;i++){first[i]=to_string(nums[i])[0]-'0';last[i]=nums[i]%10;}int res=0;for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(gcd(first[i],last[j])==1)res++;}}return res;}
};

总结:获取数字的第一位可以先将数字转换为字符串再取第一位,即to_string(nums[i])[0]-‘0’;获取数字的最后一位可以直接nums[i]%10;判断数字x和y是否互质可以使用gcd(x,y)来判断,如果等于1则是互质,反之不是。

6910. 将数组划分成若干好子数组的方式

题目描述

描述:给你一个二元数组 nums 。

如果数组中的某个子数组 恰好 只存在 一 个值为 1 的元素,则认为该子数组是一个 好子数组 。

请你统计将数组 nums 划分成若干 好子数组 的方法数,并以整数形式返回。由于数字可能很大,返回其对 109 + 7 取余 之后的结果。

子数组是数组中的一个连续 非空 元素序列。

示例 1:

输入:nums = [0,1,0,0,1]
输出:3
解释:存在 3 种可以将 nums 划分成若干好子数组的方式:
- [0,1] [0,0,1]
- [0,1,0] [0,1]
- [0,1,0,0] [1]

示例 2:

输入:nums = [0,1,0]
输出:1
解释:存在 1 种可以将 nums 划分成若干好子数组的方式:
- [0,1,0]

提示:

1 <= nums.length <= 105
0 <= nums[i] <= 1

解题思路

思路:最直观的想法是,乘法原理。其需要在每两个1之间画一个分割线,如果两个1之间有x个0则可以画x+1个分割线,最后的结果即为这多个x+1的乘积。使用一个变量prev表示上一个数字1的位置,初始为-1;使用一个变量cnt表示当前数字1的数量,初始为0;使用一个变量res表示分割方案数,初始为1。遍历数字数组,如果当前数字为1,则将cnt加一,如果cnt大于1则需要计算两个1之间的分割线数,其可以使用(i-prev)实现,然后乘以res,再更新上一个数字1的位置为当前数字1的位置,最后如果数字1的数量小于1则需要将res设置为0,比如数字数组[0,0]。

class Solution {
public:const int mod=1e9+7;int numberOfGoodSubarraySplits(vector<int>& nums) {//表示当前数字1的数量int cnt=0;//表示上一个数字1的位置int prev=-1;//表示分割方案数int res=1;int n=nums.size();for(int i=0;i<n;i++){if(nums[i]==1){cnt++;if(cnt>1)res=(long long)(res)*(i-prev)%mod;prev=i;}}if(cnt<1)res=0;return res;}
};

总结:乘法原理。


http://www.ppmy.cn/news/569188.html

相关文章

计算机操作系统安装及备份系统部分,操作系统安装、备份和还原.ppt

操作系统安装、备份和还原 利用光盘对系统进行密码消除 安装好系统之后怎么优化电脑 利用360安全卫士优化电脑 360安全卫士的使用 1.打补丁&#xff0c;修补漏洞、电脑和U盘杀毒 2.清理垃圾 3.清理插件 4.木马查杀 5.优化加速&#xff1a;减少开机启动项 6.利用软件管家安装和卸…

64位Win7安装不能上网问题解决

在卸载掉双系统中的Ubuntu之后&#xff0c;为了使电脑有更好的性能&#xff0c;我决定重新装Win7&#xff0c;由于我的是4G的内存&#xff0c;而如果是安装32位win7的话&#xff0c;我真正能够使用的内存貌似只有3.4G左右&#xff0c;这从右键计算机点击属性就可以看出来。这是…

Android变脸幕后的魔法师:各巨头…

Android操作系统进入中国第一天起&#xff0c;就不再姓Google了。想给Android“改姓”的厂商越来越多&#xff0c;华为、中兴、小米、联想等手机厂商&#xff0c;腾讯、盛大、百度、阿里巴巴四大互联网巨头&#xff0c;还有一些原本名不见经传的创业公司如乐蛙、魔趣、点心&…

一场针对手机底层的新圈地运动(程苓峰)

这场圈地运动已有四个主要参与者&#xff1a;360、金山、腾讯、百度。它们的共有特点是&#xff1a;都跟安全相关&#xff0c;旗下都有安全产品&#xff1b;更戏剧性一点&#xff0c;都或直接、或间接跟“3X”大战相关。 这场运动旨在争夺对手机应用的生杀予夺大权。解释如下。…

2015年电视游戏大厅将逐一死掉?

2014-11-21 18:11:10共30321阅读来源&#xff1a;电科技作者&#xff1a;张倩 昨日&#xff0c;电科技发表了题为《电视游戏大厅现状&#xff1a;“渠道为王”遭遇水土不服》的文章&#xff0c;在行业内引发热议。 甚至有人发出了“到了明年&#xff0c;现有的电视游戏大厅都将…

关于华为Ascend P6的各种技术资料整理

为了方便以后查阅&#xff0c;仅用的到的。特整理如下&#xff1a; 13年9月15日之后就把这华为P6送给了媳妇&#xff0c;自己现在用的是非智能机 &#xff0c;所以也暂停了对华为P6资料的整理。 13.9.15 --------------------------------------------------------------------…

BAT为何都看中智能音箱这个小玩意儿?这篇文章说清楚了

2017年7月5日&#xff0c;李彦宏乘坐“无人车”驶上五环这件事刷了屏&#xff0c;百度和阿里不约而同对智能音箱进行布局反而没多少人关注。 上午&#xff0c;百度发布DuerOS开放平台让第三方硬件公司开发具有对话能力的智能设备&#xff1b; 下午阿里巴巴在北京发布“天猫精灵…

智能硬件市场与产品概况整理

近年来&#xff0c;随着智能设备的飞速发展&#xff0c;各种各样的智能硬件设备如同潮水一般涌到用户面前。智能硬件可谓正当风口&#xff0c;国内各大互联网公司、传统电商公司、硬件厂家纷纷布局智能领域。近期&#xff0c;苏宁成立智能终端公司&#xff0c;并发布BiuOS及10款…