codecamp

数据组合求值算法挑战

方法一:

var pairwise=(function() {
  var res=[];  //放序号的缓存
  function judge(arr,val){
    for(let a of arr){
      if( a==val ){
        return true;
      }
    }
    return false;
  }

  
  function fn(n,arr,arg){   //递归函数
    for(let i=n,l=arr.length;i<l;i++){
      if( judge(res,i) || judge(res,n) ){
        continue;
      }
      if( n!=i && arr[n]+arr[i]==arg ){
          res=res.concat(n,i);        
          break;
      }
    }
    if( n!=arr.length-1 ){
       fn(n+1,arr,arg);
    }       
  }

  
  return function(arr, arg){
    res=[];
    if( arr.length==0 ){
      return 0;
    }
    fn(0,arr,arg);
    return res.reduce(function(a,b){
      return a+b;
    });
  };
})();


pairwise([1, 1, 1], 2);

方法二:

function pairwise(arr, arg) {
        var len = arr.length,
            r = 0,
            cArr = [];
        for (var i = 0; i < len; i++) {
            for (var j = i + 1; j < len; j++) {
                if (arr[i] + arr[j] === arg && i !== j && !(cArr.indexOf(i) > 0 || cArr.indexOf(j) > 0)) {
                    r = r + i + j;
                    cArr.push(i);
                    cArr.push(j);
                    break;
                }
            }
        }
        return r;
    }


pairwise([1,4,2,3,0,5], 7);
轨道周期算法挑战
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定