LeetCode 1250. 检查「好数组」(set / 最大公约数)
文章目录
- 1. 题目
- 2. 解题
1. 题目
给你一个正整数数组 nums,你需要从中任选一些子集,然后将子集中每一个数乘以一个 任意整数,并求出他们的和。
假如该和结果为 1,那么原数组就是一个「好数组」,则返回 True;否则请返回 False。
示例 1:
输入:nums = [12,5,7,23]
输出:true
解释:挑选数字 5 和 7。
5*3 + 7*(-2) = 1示例 2:
输入:nums = [29,6,10]
输出:true
解释:挑选数字 29, 6 和 10。
29*1 + 6*(-3) + 10*(-1) = 1示例 3:
输入:nums = [3,6]
输出:false提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^9
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/check-if-it-is-a-good-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 将数字插入 set, 反向遍历
- 当前数对前一个数求模,模==1,返回 true
- 模 != 1,将 模插入 set
class Solution {public:bool isGoodArray(vector<int>& nums) {set<int> s(nums.begin(), nums.end());if(*s.begin()==1) return true;auto it = s.rbegin();int prev = *it, mod;for(it++; it != s.rend(); ++it){if(*it == 0)break;mod = prev%*it;if(mod == 1)return true;elses.insert(mod);prev = *it;}return false;}
};
436 ms 44 MB
再看答案:裴蜀定理
- 求所有数字的最大公约数,需要为1才可以
class Solution {public:bool isGoodArray(vector<int>& nums) {int g = nums[0];for(int i = 1; i < nums.size(); ++i){g = __gcd(g, nums[i]);}return g == 1;}
};
class Solution {public:bool isGoodArray(vector<int>& nums) {int g = nums[0];for(int i = 1; i < nums.size(); ++i){g = gcd(g, nums[i]);}return g == 1;}int gcd(int a, int b){int r;while(b){r = a%b;a = b;b = r;}return a;}
};
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 1250. 检查「好数组」(set / 最大公约数)相关推荐
- 为什么 LeetCode(力扣)「执行代码」正确,提交代码出错?
为什么有时在 LeetCode (力扣)上,Run Code(执行代码) 正确,Submit(提交代码)时提示 Wrong Answer(解答错误)? 看这篇文章你就懂了,真不是 LeetCode 出 ...
- java 字符串数组定义_「string数组」string 数组怎么定义 - seo实验室
string数组 string数组的定义有三种: String arr[] = new String[10]; //创建一个长度为10的String 类型数组. String arr[] = {&qu ...
- Java 字符串数组定义_「string数组」string 数组怎么定义
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站 点击跳转浏览. string数组的定义有三种: String arr[] = new String[1 ...
- java创建数组并赋值_「java 数组」Java创建数组的方法 - seo实验室
java 数组 最近学java,一点小心得,希望和大家分享一下,第一次写文章,写的不好希望大家谅解,当然我也会尽力写好这篇文章! Java创建数组的方法大致有三种 说明:这里以int为数据类型以arr ...
- 【mac】「终端查看完整命令记录」「提示软件已损坏,无法打开」「sip~」「Vcsa安装」「errno 30」「E325」
小白小白学生党,只是作为学习日记整理,方便日后查看,如有不足请指出--谢谢 (最后啊-Mac本机内存只有8g,撑不起来ESXi,哭泣告终) (提问:最后文章发布的文章类型怎么填写啊-要怎么去找文章中链 ...
- python【力扣LeetCode算法题库】1248- 统计「优美子数组」
统计「优美子数组」 给你一个整数数组 nums 和一个整数 k. 如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」. 请返回这个数组中「优美子数组」的数目. 示例 ...
- 多维数组的索引与切片_「GCTT 出品」Go 系列教程——11. 数组和切片
Go语言中文网,致力于每日分享编码知识,欢迎关注我,会有意想不到的收获! Go 系列教程是非常棒的一套初学者教程,入门就它了. 「GCTT 出品」Go 系列教程--1. 介绍与安装 「GCTT 出品」 ...
- LeetCode 1248. 统计「优美子数组」(要复习)
文章目录 1. 题目 2. 解题 2.1 记录奇数出现的pos 2.2 前缀和 1. 题目 给你一个整数数组 nums 和一个整数 k. 如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个 ...
- PHP如何生成大数组「考虑内存」
PHP如何生成大数组「考虑内存」 PHP如何生成大数组「考虑内存」 1.我们先来看一下,如果要生成1000000个元素的数组,对内存的消耗: 2.使用生成器原理生成数组对象的话,如下: PHP如何生成 ...
最新文章
- 3157: 国王奇遇记 3516: 国王奇遇记加强版 - BZOJ
- (转)WindowsPhone基础琐碎总结-----数据绑定(一)
- 程序员必看!Android面试10大知识点总结宝典助你通关!年薪50W
- 为什么要用非关系数据库?
- redis中使用redis-dump导出、导入、还原数据实例
- lisp 图元 天正 自定义_C# 自定义autolisp 函数 研究
- linux 线程池编程,Linux-C-9-线程池编程
- 个人的中小型项目前端架构浅谈(转)
- 复旦邱锡鹏组最新综述:A Survey of Transformers!
- 书籍分享——《创新者的窘境》
- 物联网|ZETA技术助力远超抄表实现智能化、精细化
- word2016如何在将指定页设置为首页
- 如何盘活客户资源,提升成单率?
- Could Not Autowired ,No Beans of ....
- 双胺基修饰MOF/GO烯复合材料|硫修饰Cu基MOF材料|磁性纳米多孔碳材料FeO@C|mof材料的复杂定制
- 剑指offer面试题2:实现单例模式
- Day442443444445446447448.K8s -谷粒商城
- 怎么给视频换背景?只需4步,即可轻松换背景
- 8岁 YouTube博主年收入1.8亿,成最赚钱博主!
- 如何设计产品的引流诱饵?如何控制引流产品的成本呢?
热门文章
- Django中的核心思想ORM---元类实现ORM
- 如何有效解决C与C++的相互调用问题
- canny算子的理论分析
- mysql mtop_mysqlmtop2.2运行出错
- ajax改变json指向,Ajax遍历jSon后对每一条数据进行相应的修改和删除(代码分享)
- docker选择安装位置_自定义WSL的安装位置,别再装到C盘啦
- Linux字符设备驱动剖析
- linux中的信号3——alarm、pause函数
- SQL Server Transactional Replication 中的 CommitBatchSize 和 CommitBatchThreshold 属性
- github生成SSH公钥