用给定的总和找到相邻元素三重奏的数量

时间:2020-07-08 04:07:33

标签: javascript

我正在尝试查找具有给定总和的相邻元素三重奏的数量。

示例:

输入arr = [1,2,3,12,1,4,9,6] sum = 6

输出= 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);

但这不适用于相邻元素。

1 个答案:

答案 0 :(得分:1)

我只在这里使用一个循环/遍历:

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));

此处的策略是仅向下遍历输入数组一次,并在每个步骤中跟踪当前,先前和先前的先前值。然后,我们计算这三个值的总和,并与输入的目标总和进行比较。