【leetcode】1250. Check If It Is a Good Array
题目如下:
Given an array
numsof positive integers. Your task is to select some subset ofnums, multiply each element by an integer and add all these numbers. The array is said to be good if you can obtain a sum of1from the array by any possible subset and multiplicand.Return
Trueif the array is good otherwise returnFalse.Example 1:
Input: nums = [12,5,7,23] Output: true Explanation: Pick numbers 5 and 7. 5*3 + 7*(-2) = 1Example 2:
Input: nums = [29,6,10] Output: true Explanation: Pick numbers 29, 6 and 10. 29*1 + 6*(-3) + 10*(-1) = 1Example 3:
Input: nums = [3,6] Output: falseConstraints:
1 <= nums.length <= 10^51 <= nums[i] <= 10^9
解题思路:看到这个题目,大家或许能猜到这题对应着数学定律。至于是什么定律,我是不知道的。后来网上搜索才发现对应的定律是裴蜀定理,最后的解法就是求出所有元素的最大公约数,判断是否为1即可。
代码如下:
class Solution(object): def isGoodArray(self, nums): """ :type nums: List[int] :rtype: bool """ def gcd(m, n): if not n: return m else: return gcd(n, m % n) val = nums[0] for i in range(1,len(nums)): val = gcd(val,nums[i]) return val == 1

浙公网安备 33010602011771号