讨论/题目交流/🏆 第 181 场力扣周赛/
🏆 第 181 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛

image.png

3 分 - 按既定顺序创建目标数组
4 分 - 四因数
5 分 - 检查网格中是否存在有效路径
6 分 - 最长快乐前缀

展开讨论

感觉这次的题目,第三题是比较繁琐的,第四题不难,但是我第二题有问题🤣
思路:遍历每一个数字,看看除了 1 和 它本身之外是否还有且仅有一对因子,并且这两个因子不相等,就把这两个因子加上,在加上 1 和 它本身(!它本身不能等于1),累积到 和中,但是后面遇到大数,测试用例的结果为 134716980 的时候,我就跟他差几千,很烦,不知道是哪的问题,求大佬解惑。

/**
 * @param {number[]} nums
 * @return {number}
 */

/*
  除了 1 和 本身之外,只有有两个因数,并且他们不相等
*/
var sumFourDivisors = function(nums) {
  let sum = 0;
  
  for (let i = 0; i < nums.length; i++) {
    let num = nums[i];
    if (num < 3) continue;
    
    let prefix_two = 1 + num,
        midRoot = Math.sqrt(num),
        findRes = 0,
        suffix_two = null;
    for (let j = 2; j <= midRoot; j++) {
      let temp = num / j;
      if (num % j === 0 && temp !== j) {
        if (findRes === 0) {
          suffix_two = temp + j;
          findRes++;
        } else {
          findRes++;
          break;
        }
      }
    }
    
    if (findRes === 1) sum += suffix_two + prefix_two;
  }
  
  return sum;
};
展开全部 41 讨论