Сложность: hard
Дан массив nums из целых положительных чисел. Ваша задача - выбрать некоторое подмножество nums, умножить каждый элемент на целое число и сложить все эти числа.Массив считается хорошим, если из него можно получить сумму, равную 1, при любом возможном подмножестве и множителе. Верните True, если массив хороший, иначе верните False.
Пример:
Input: nums = [12,5,7,23]
Output: true
👨💻 Алгоритм:
1⃣Если наибольший общий делитель (НОД) всех чисел в массиве равен 1, то массив считается хорошим.
2⃣Если НОД всех чисел больше 1, то массив не считается хорошим
3⃣Получить сумму, равную 1, умножая и складывая элементы.
😎 Решение:
var isGoodArray = function(nums) {
let gcd = nums[0];
for (let num of nums) {
gcd = gcdFunc(gcd, num);
if (gcd === 1) return true;
}
return gcd === 1;
};
function gcdFunc(a, b) {
while (b !== 0) {
let temp = b;
b = a % b;
a = temp;
}
return a;
}Ставь 👍 и забирай 📚 Базу знаний