当前位置: 首页 > news >正文

LeetCode-1250. 检查「好数组」【数论,裴蜀定理】

LeetCode-1250. 检查「好数组」【数论,裴蜀定理】

  • 题目描述:
  • 解题思路一:裴蜀定理是:a*x+b*y=1。其中a,b是数组中的数,x,y是任意整数。如果a,b互质那么一定有解。问题即转换为寻找互质的数。
  • 解题思路二:简化代码1
  • 解题思路三:三行代码!

题目描述:

给你一个正整数数组 nums,你需要从中任选一些子集,然后将子集中每一个数乘以一个 任意整数,并求出他们的和。

假如该和结果为 1,那么原数组就是一个「好数组」,则返回 True;否则请返回 False。

示例 1:

输入:nums = [12,5,7,23]
输出:true
解释:挑选数字 5 和 7。
53 + 7(-2) = 1

示例 2:

输入:nums = [29,6,10]
输出:true
解释:挑选数字 29, 6 和 10。
291 + 6(-3) + 10*(-1) = 1

示例 3:

输入:nums = [3,6]
输出:false

提示:

1 <= nums.length <= 10^5
1 <= nums[i] <= 10^9
https://leetcode.cn/problems/check-if-it-is-a-good-array/description/

解题思路一:裴蜀定理是:ax+by=1。其中a,b是数组中的数,x,y是任意整数。如果a,b互质那么一定有解。问题即转换为寻找互质的数。

class Solution {
public:bool isGoodArray(vector<int>& nums) {int s=0;for (int x : nums) {s=gcd(x,s);if(s==1) return true;//剪枝}return s==1;}int gcd(int a, int b) {//辗转相除法if(b==0) return a;return gcd(b,a%b);}
};

时间复杂度:O(n)
空间复杂度:O(1)

解题思路二:简化代码1

class Solution {
public:bool isGoodArray(vector<int>& nums) {int s=0;for (int x : nums) {s=gcd(x,s);if(s==1) return true;//剪枝}return s==1;}
};

时间复杂度:O(n)
空间复杂度:O(1)

解题思路三:三行代码!

class Solution {
public:bool isGoodArray(vector<int>& nums) {int s=0;for (int x : nums) s=gcd(x,s);return s==1;}
};

时间复杂度:O(n)
空间复杂度:O(1)

http://www.lryc.cn/news/7121.html

相关文章:

  • 【Linux】NTP时间同步服务与NFS网络文件共享存储服务器(配置、测试)
  • windows下php连接oracle安装oci8扩展报错(PHP Startup: Unable to load dynamic library ‘oci8_11g‘)
  • TensorRT的功能
  • 433MHz无线通信--模块RXB90
  • Seata源码学习(三)-2PC核心源码解读
  • IO流概述
  • 【node.js】node.js的安装和配置
  • Python优化算法—遗传算法
  • 数据埋点(Data buried point)的应用价值剖析
  • 一文弄懂硬链接、软链接、复制的区别
  • 界面组件Telerik ThemeBuilder R1 2023开创应用主题研发新方式!
  • 在FederatedScope 如何查看clientserver之间的传递的参数大小(通讯量)? 对源码的探索记录
  • 2023爱分析 · 数据科学与机器学习平台厂商全景报告 | 爱分析报告
  • 20230215_数据库过程_高质量发展
  • 【百度 JavaScript API v3.0】LocalSearch 位置检索、Autocomplete 结果提示
  • 运用Facebook投放,如何制定有效的竞价策略?
  • 大数据框架之Hadoop:HDFS(五)NameNode和SecondaryNameNode(面试开发重点)
  • 计算机网络 - 1. 体系结构
  • 银行业上云进行时,OLAP 云服务如何解决传统数仓之痛?
  • 特定领域知识图谱融合方案:文本匹配算法之预训练Simbert、ERNIE-Gram单塔模型等诸多模型【三】
  • 【2023最新教程】从0到1开发自动化测试框架(0基础也能看懂)
  • linux备份命令小记 —— 筑梦之路
  • vue项目(vue-cli)配置环境变量和打包时区分开发、测试、生产环境
  • Python 命名规范
  • 操作系统——2.操作系统的特征
  • 【计算机网络期末复习】第六章 应用层
  • TypeScript基本教程
  • 使用Windows API实现本地音频采集
  • 实用的费曼学习法 | 一些思考
  • Linux安装Docker配置docker-compose 编排工具【超详细】