举个例子:有一个能力数组[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。
思路:
双重循环后要置false防止重复配对,效率不高,有更高效的办法请留言。
let pairwise = (arr, arg) => { let arr2 = arr,count = 0; for(let i = 0;i < arr.length;i++){ for(let j = i + 1;j < arr2.length;j++){ if(arr[i] + arr2[j] === arg){ count += i + j; arr[i] = "false"; arr[j] = "false"; } } } return count; }; pairwise([1, 3, 2, 4], 4);
如果有不明白的地方请留言,如果有更好更简便更优化的方法请留言,谢谢。
更多内容请访问我的个人博客:Bblog