美文网首页
Pairwise(待解)

Pairwise(待解)

作者: Oracle_c113 | 来源:发表于2017-10-19 22:51 被阅读0次

要求

举个例子:有一个能力数组[7,9,11,13,15],按照最佳组合值为20来计算,只有7+13和9+11两种组合。而7在数组的索引为0,13在数组的索引为3,9在数组的索引为1,11在数组的索引为2。

所以我们说函数:pairwise([7,9,11,13,15],20) 的返回值应该是0+3+1+2的和,即6。

我们可以通过表格来更直观地查看数组中索引和值的关系:

Index 0 1 2 3 4
Value 7 9 11 13 15

解答

一段百思不得其解的废代码。。。

function pairwise(arr, arg) {
  var num=0;
  var array=arr;
  for(i=0;i<arr.length;i++){
    var left=arg-arr[i];
    array.shift();  
    var index=array.indexOf(left);
    if(index>=0){
     index=index+i+1;
     index+=i;
     num+=index; 
    }
  } 

  return num;
}

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

正解一:

  function pairwise(arr, arg) {
  var l=arr.length,res=0;
  for(var i=0;i<l;i++){
    for(var j=i+1;j<l;j++){
      if(arr[i]+arr[j]===arg){
        res=res+i+j;
        arr[i]="false";
        arr[j]="false";
      }
    }
  }
  
  return res;
}
pairwise([1,4,2,3,0,5], 7);

正解二:

 function pairwise(arr, arg) {
    var a = arr.reduce(function(prev, currv, index, array) {
      var l = array.length;
      for (var i = index + 1; i < l; i++) {
        if (array[index] + array[i] === arg) {
          arr[index] = "false";
          arr[i] = "false";
          return prev + i + index;
        }
      }
      return prev;
    }, 0);
    return a;
  }
pairwise([1,4,2,3,0,5], 7);

相关文章

网友评论

      本文标题:Pairwise(待解)

      本文链接:https://www.haomeiwen.com/subject/lhzpuxtx.html