要求
舉個(gè)例子:有一個(gè)能力數(shù)組[7,9,11,13,15],按照最佳組合值為20來(lái)計(jì)算握玛,只有7+13和9+11兩種組合够傍。而7在數(shù)組的索引為0甫菠,13在數(shù)組的索引為3,9在數(shù)組的索引為1冕屯,11在數(shù)組的索引為2寂诱。
所以我們說(shuō)函數(shù):pairwise([7,9,11,13,15],20) 的返回值應(yīng)該是0+3+1+2的和,即6安聘。
我們可以通過(guò)表格來(lái)更直觀地查看數(shù)組中索引和值的關(guān)系:
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);