力扣 每日一题 1250. 检查「好数组」难度:困难,rating: 1983(数论)
Posted nefu-ljw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣 每日一题 1250. 检查「好数组」难度:困难,rating: 1983(数论)相关的知识,希望对你有一定的参考价值。
题目链接
https://leetcode.cn/problems/check-if-it-is-a-good-array/
题目来源于:第161场周赛 Q4 rating: 1983
思路
这题关键在于发现最大公因数(gcd)起到的作用,将原问题转换为“判断是否存在多个数,它们的gcd=1”。
参考 两个数用辗转相减法可以得到它们的最大公因数,这个过程等价于两个数可以通过同时乘以两个特定整数再求和得到它们的最大公因数。一个互质数组的最大公因数是1,所以一定存在一组整数可以让它们相乘求和得到1。
更形式化的定理称为“裴蜀定理”,具体可看官方题解。
代码
class Solution
public:
bool isGoodArray(vector<int>& nums)
int res=nums[0];
for(int i=1;i<nums.size();i++)
res=__gcd(res,nums[i]);
if(res==1)
return true;
return res==1;
;
以上是关于力扣 每日一题 1250. 检查「好数组」难度:困难,rating: 1983(数论)的主要内容,如果未能解决你的问题,请参考以下文章
力扣 每日一题 862. 和至少为 K 的最短子数组难度:困难,rating: 2306(前缀和+单调队列)
力扣 每日一题 862. 和至少为 K 的最短子数组难度:困难,rating: 2306(前缀和+单调队列)
力扣 每日一题 927. 三等分难度:困难,rating: 1994(思维+后缀字符串+bitset技巧)
力扣 每日一题 801. 使序列递增的最小交换次数难度:困难,rating: 2066(动态规划)