簡體   English   中英

找到給定總和的相鄰元素三元組的數量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM