文章目录

  • 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 / 最大公约数)相关推荐

  1. 为什么 LeetCode(力扣)「执行代码」正确,提交代码出错?

    为什么有时在 LeetCode (力扣)上,Run Code(执行代码) 正确,Submit(提交代码)时提示 Wrong Answer(解答错误)? 看这篇文章你就懂了,真不是 LeetCode 出 ...

  2. java 字符串数组定义_「string数组」string 数组怎么定义 - seo实验室

    string数组 string数组的定义有三种: String arr[] = new String[10]; //创建一个长度为10的String 类型数组. String arr[] = {&qu ...

  3. Java 字符串数组定义_「string数组」string 数组怎么定义

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站 点击跳转浏览. string数组的定义有三种: String arr[] = new String[1 ...

  4. java创建数组并赋值_「java 数组」Java创建数组的方法 - seo实验室

    java 数组 最近学java,一点小心得,希望和大家分享一下,第一次写文章,写的不好希望大家谅解,当然我也会尽力写好这篇文章! Java创建数组的方法大致有三种 说明:这里以int为数据类型以arr ...

  5. 【mac】「终端查看完整命令记录」「提示软件已损坏,无法打开」「sip~」「Vcsa安装」「errno 30」「E325」

    小白小白学生党,只是作为学习日记整理,方便日后查看,如有不足请指出--谢谢 (最后啊-Mac本机内存只有8g,撑不起来ESXi,哭泣告终) (提问:最后文章发布的文章类型怎么填写啊-要怎么去找文章中链 ...

  6. python【力扣LeetCode算法题库】1248- 统计「优美子数组」

    统计「优美子数组」 给你一个整数数组 nums 和一个整数 k. 如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」. 请返回这个数组中「优美子数组」的数目. 示例 ...

  7. 多维数组的索引与切片_「GCTT 出品」Go 系列教程——11. 数组和切片

    Go语言中文网,致力于每日分享编码知识,欢迎关注我,会有意想不到的收获! Go 系列教程是非常棒的一套初学者教程,入门就它了. 「GCTT 出品」Go 系列教程--1. 介绍与安装 「GCTT 出品」 ...

  8. LeetCode 1248. 统计「优美子数组」(要复习)

    文章目录 1. 题目 2. 解题 2.1 记录奇数出现的pos 2.2 前缀和 1. 题目 给你一个整数数组 nums 和一个整数 k. 如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个 ...

  9. PHP如何生成大数组「考虑内存」

    PHP如何生成大数组「考虑内存」 PHP如何生成大数组「考虑内存」 1.我们先来看一下,如果要生成1000000个元素的数组,对内存的消耗: 2.使用生成器原理生成数组对象的话,如下: PHP如何生成 ...

最新文章

  1. 3157: 国王奇遇记 3516: 国王奇遇记加强版 - BZOJ
  2. (转)WindowsPhone基础琐碎总结-----数据绑定(一)
  3. 程序员必看!Android面试10大知识点总结宝典助你通关!年薪50W
  4. 为什么要用非关系数据库?
  5. redis中使用redis-dump导出、导入、还原数据实例
  6. lisp 图元 天正 自定义_C# 自定义autolisp 函数 研究
  7. linux 线程池编程,Linux-C-9-线程池编程
  8. 个人的中小型项目前端架构浅谈(转)
  9. 复旦邱锡鹏组最新综述:A Survey of Transformers!
  10. 书籍分享——《创新者的窘境》
  11. 物联网|ZETA技术助力远超抄表实现智能化、精细化
  12. word2016如何在将指定页设置为首页
  13. 如何盘活客户资源,提升成单率?
  14. Could Not Autowired ,No Beans of ....
  15. 双胺基修饰MOF/GO烯复合材料|硫修饰Cu基MOF材料|磁性纳米多孔碳材料FeO@C|mof材料的复杂定制
  16. 剑指offer面试题2:实现单例模式
  17. Day442443444445446447448.K8s -谷粒商城
  18. 怎么给视频换背景?只需4步,即可轻松换背景
  19. 8岁 YouTube博主年收入1.8亿,成最赚钱博主!
  20. 如何设计产品的引流诱饵?如何控制引流产品的成本呢?

热门文章

  1. Django中的核心思想ORM---元类实现ORM
  2. 如何有效解决C与C++的相互调用问题
  3. canny算子的理论分析
  4. mysql mtop_mysqlmtop2.2运行出错
  5. ajax改变json指向,Ajax遍历jSon后对每一条数据进行相应的修改和删除(代码分享)
  6. docker选择安装位置_自定义WSL的安装位置,别再装到C盘啦
  7. Linux字符设备驱动剖析
  8. linux中的信号3——alarm、pause函数
  9. SQL Server Transactional Replication 中的 CommitBatchSize 和 CommitBatchThreshold 属性
  10. github生成SSH公钥