题解 | #数组分组#

数组分组

http://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86

//参考网友ld1230的解法
//思想:将能整除3或者5的各自分为一组,记为sum1和sum2,剩余的保存在数组nums里
//现有两组,剩余nums里的数要么在sum1里要么在sum2里,利用递归依次放在sum1和sum2中
//最终nums里的数字全部放进去,若sum1 == sum2,则返回true,否则,返回false
let str;
while(str = readline()){
  let num = readline();
  let arr = num.split(' ');
  let three = arr.filter((v)=>{
    return v%3==0 && v%5!=0;
  })

  let five = arr.filter((v)=>{
    return v%5==0;
  })

  let other = arr.filter((v)=>{
    return v%5!=0 &&v%3!=0;
  })
  //所有三的倍数的数字的和
  let tsum = three.reduce((pre,cur)=>{
    return pre+cur*1;
  },0)
  //所有五的倍数的数字的和
  let fsum = five.reduce((pre,cur)=>{
    return pre+cur*1;
  },0)

  console.log(isExists(tsum,fsum,other,0))
}

function isExists(sum1,sum2,nums,index){
    if(index == nums.length && sum1 != sum2) return false;
    if(index == nums.length && sum1 == sum2) return true;
    if(index < nums.length) return isExists(sum1+parseInt(nums[index]), sum2, nums, index+1) || isExists(sum1, sum2+parseInt(nums[index]), nums, index+1);
    return false;
}
全部评论
最后一个function写得太漂亮了
点赞 回复 分享
发布于 2022-09-26 21:19 江西

相关推荐

感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
5 2 评论
分享
牛客网
牛客企业服务