Pairwise(待解)

要求

举个例子:有一个能力数组[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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:选D,7+9=16;9+(-1)=8;(...
    Alex_bingo阅读 19,395评论 1 19
  • 曾经有一份美好的爱情放在我的面前我没有珍惜。等到失去后才后悔莫及。如果可以再对小李说。毛欣想说。这辈子无缘再牵手。...
    毛欣与小李阅读 7,579评论 0 13
  • NumPy是Python中关于科学计算的一个类库,在这里简单介绍一下。 来源:https://docs.scipy...
    灰太狼_black阅读 4,968评论 0 5
  • 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想从新回忆下,请看看Python Tutoria...
    舒map阅读 7,380评论 1 13
  • 原谅我不能做到每天都有话可说,有文可写,所以,我决定每周天写写东西,总结总结生活,感悟感悟人生。 开学嘞,明天正式...
    灼兮阅读 2,087评论 0 0