整数配列numsが与えられた場合、これらの整数の因子の合計を、配列内の正確に4つの因子とともに返します。
配列内の質問の意味を満たす整数がない場合は、0が返されます。
例:
入力:nums = [21,4,7]
出力:32
説明:
21には4つの要素があります:1、3、7、21
4には3つの要素があります:1、2、4
7には2つの要素があります:1 7の
答えは、21のすべての要素の合計です。
促す:
1 <= nums.length <= 10 ^ 4
1 <= nums [i] <= 10 ^ 5
出典:LeetCode
リンク:https ://leetcode-cn.com/problems/four-divisors
解決方法は、主にJavaScript es6のSetデータ構造を使用して重複を削除し、完全な二乗数の特別な例に注意を払います。
コード:
/**
* @param {number[]} nums
* @return {number}
*/
const sumFourDivisors=nums=>{
let ans = 0;
for (let i = 0; i < nums. length; i++){
const temp = help(nums[i]);
if ( temp.size === 4) {
ans += Array. from( temp.values( )).reduce((a, b) => a + b, 0);
}
}
return ans;
}
function help(num){
const max = Math. floor(Math. sqrt(num));
const ans = new Set();
let min = 1;
while (min <= max) {
if ( (num / min) %1==0){
ans .add(min);
ans. add(num/min);
}
min++ ;
}
return ans;
}