【FCC】Pairwise js算法
生活随笔
收集整理的這篇文章主要介紹了
【FCC】Pairwise js算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
有一個能力數組[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
任務:幫右邊的pairwise函數實現上面的功能。
例子:
pairwise([1, 4, 2, 3, 0, 5], 7) 應該返回 11.
pairwise([1, 3, 2, 4], 4) 應該返回 1.
pairwise([1, 1, 1], 2) 應該返回 1.
pairwise([0, 0, 0, 0, 1, 1], 1) 應該返回 10.
pairwise([], 100) 應該返回 0.
注意:匹配了一次之后數組項就不能再用了。那就把它設為false吧。
代碼:
<script type="text/javascript">
//第一種比較容易理解
function pairwise(arr, arg) {
if (arr.length === 0) {
return 0;
}
var sum = 0;
for (var i = 0; i < arr.length; i++) {
if (typeof(arr[i]) == 'number') {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] + arr[j] === arg) {
sum = sum + i + j;
arr[i] = 'false';
arr[j] = 'false';
}
}
}
}
return sum;
}
//第二種方法
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;
}
</script>
總結
以上是生活随笔為你收集整理的【FCC】Pairwise js算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【FCC】Map the Debris
- 下一篇: 【FCC】番茄时钟pomodoro cl