[英]Find the number of adjacent element trios with given sum
我試圖找到給定總和的相鄰元素三重奏的數量。
例子:
輸入 arr = [1,2,3,12,1,4,9,6] sum = 6
Output = 2
([1,2,3,12,1,4,1,6])
我的代碼:
function getCount(arr, sum) {
var count = 0;
var indexes = [];
for (var i = 0; i < arr.length-2; i++) {
for (var j = i + 1; j < arr.length-1; j++) {
for (var k = j + 1; k < arr.length; k++){
if ((arr[i] + arr[j] + arr[k] == sum) && indexes.includes(i) && indexes.includes(j)) {
count++;
}
}
}
}
return count;
}
getCount([1,2,3,12,3,4,9,6],19);
但這不適用於相鄰元素。
我只會在這里使用一個循環/傳遞:
function getCount(arr, sum) { if (arr.length < 3) return 0; var count = 0; var first = arr[0]; var second = arr[1]; var third; for (var i=2; i < arr.length; i++) { third = arr[i]; var currSum = first + second + third; if (currSum == sum) ++count; first = second; second = third; } return count; } console.log(getCount([], 3)); console.log(getCount([1, 2], 3)); console.log(getCount([1, 2, 3], 3)); console.log(getCount([1, 2, 3], 6)); console.log(getCount([1,2,3,12,3,4,9,6], 19));
這里的策略是只遍歷輸入數組一次,在每一步跟蹤當前、先前和先前的先前值。 然后,我們計算這三個值的總和,並與輸入的目標總和進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.