题解 | #数组分组#递归,纯粹为了好理解

数组分组

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

//递归,others第三组有两种情况,根本没有值,无须分配; 有值,需要全部分配完
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let k=0; 
let n = 0;
let nums = [];
rl.on('line', function(line){
    if(k === 0){
      n = Number(line);
      k++;
    }else {
      nums = line.split(' ').map(e=> Number(e));
      getArr();
    }
});

function getArr(){
  let multi5 = [];
  let multi3 = [];
  let others = [];
  for(let i=0; i<nums.length; i++){
     if(nums[i] % 3 === 0 && nums[i] % 5 !== 0){
       multi3.push(nums[i]); 
     }else if(nums[i] % 5 === 0){
       multi5.push(nums[i])  
     }else {
       others.push(nums[i]);
     }
  }
  let sum5 = multi5.length >0 ? multi5.reduce((prev, current)=>prev+current) : 0;
  let sum3 = multi3.length > 0 ?  multi3.reduce((prev, current)=>prev+current) : 0;
  console.log(isExists(sum5, sum3, others, 0));
}

function isExists(sum5, sum3, others, index){
  if(others.length === 0 && sum5 !== sum3){
    return false;
  }else if(others.length === 0 && sum5 === sum3){
    return true;
  }else if(others.length === index && sum5 !== sum3){
     return false;
  }else if(others.length === index && sum5 === sum3){
     return true;
  }else if(index < others.length){
     return isExists(sum5+others[index], sum3, others, index+1) || isExists(sum5, sum3+others[index], others, index+1);
  }else {
     return false;
  }
}

#华为机试#
全部评论

相关推荐

绝迹的星:前端和后端写两份简历, 如果想干全栈就直接写求职意向为全栈工程师
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务