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+编程语言教程
取消
确定
目录

HTML5&CSS

JavaScript

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }