如何对数组中的特定元素求和?

阿农·德保拉

我正在尝试操作一个数组。对于每个操作,我需要为两个给定索引之间的每个数组元素添加一个值,包括。这是一个例子:

0 1 100  // From index 0 to 1, add 100
1 4 100  // From index 1 to 4, add 100
2 3 100  // From index 2 to 3, add 100

// Expected Result:
[100, 200, 200, 200, 100]

// Explanation:
[100, 100] // After the first update.
[100, 200, 100, 100, 100] // After the second update.
[100, 200, 200, 200, 100] // After the third update.

这就是我得到的:

function arrayManipulation(n, queries) {
  let newArr = [];
  for (let i = 0; i < queries.length; i++) {
    let indexIni = queries[i][0];
    let indexEnd = queries[i][1];
    let indexSum = queries[i][2];

    for (indexIni; indexIni < indexEnd; indexIni++) {
      console.log(indexIni, indexEnd, indexSum);
      newArr.splice(indexIni, 0, indexSum);
    }
  }
  console.log(newArr);
}

let n1 = 5;
let queries1 = [
  [0, 1, 100],
  [1, 4, 100],
  [2, 3, 100]
];
arrayManipulation(n1, queries1);

我试图做的是在第二个参数之上工作,splice()这样我就可以以某种方式将它加到我要输入的数字上。

我正在尝试的方式,可能吗?或者有更简单的方法吗?

解码器

1)循环应该去

indexIni <= indexEnd

2)从头开始迭代并检查该特定索引上是否存在任何数字。如果是,则添加indexSumelse 将值设置为indexSum

function arrayManipulation(n, queries) {
  let newArr = [];
  for (let i = 0; i < queries.length; i++) {
    let [indexIni, indexEnd, indexSum] = queries[i];

    for (indexIni; indexIni <= indexEnd; indexIni++) {
      if (newArr[indexIni]) {
        newArr[indexIni] += indexSum;
      } else {
        newArr[indexIni] = indexSum;
      }
    }
  }
  console.log(newArr);
}

let n1 = 5;
let queries1 = [
  [0, 1, 100],
  [1, 4, 100],
  [2, 3, 100],
];
arrayManipulation(n1, queries1);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章