Javascript 模式识别

问题描述 投票:0回答:1

编程测验:模式识别

编写一个以整数列表作为输入的函数 并返回一个新列表,其中每个元素是所有元素的总和 在其之后的原始列表中(包括其自身)。

示例:

// 1
Input: [2, 3, 8]
Output: [13, 10, 2]

// 2
Input: [6, 2, 3]
Output: [11, 9, 6]

// 3
Input: [4, 7, 2, 8, 6]
Output: [27, 25, 17, 10, 4]

限制:

  • 输入列表将至少包含一个整数。

const sumElements = (numbers) => {
  let totalSum = 0;
  let firstInput = 0
  let totalSumSubtracted = 0;

  let result = [];
  for (let i = 0; i < numbers.length; i++) {
    totalSum += numbers[i];
    firstInput = numbers[0]
  }

  result.push(totalSum);
  // console.log(result);

  for (let i = 1; i < numbers.length; i++) {
    totalSumSubtracted = totalSum - numbers[i];
    // console.log(totalSumSubtracted);
    result.push(totalSumSubtracted);
  }

  result.pop()
  result.push(firstInput)

  return result
}

console.log(sumElements([2, 3, 8]));
console.log(sumElements([6, 2, 3]));
console.log(sumElements([4, 7, 2, 8, 6]));
.as-console-wrapper { max-height: 100% !important; }

大家好,早上好。我正在做一个编程测验。我也尝试过自己和 chatGPT 做,但它没有产生所需的输出。我被困住了 你能更正我上面的代码吗?我很困惑如何处理数组输入元素超过 3 的情况。

javascript arrays pattern-recognition
1个回答
0
投票
const sumOfElements = (numbers) => {
    let result = [];
    let cumulativeSum = 0;

    for (let i = numbers.length - 1; i >= 0; i--) {
        cumulativeSum += numbers[i];
        result[i] = cumulativeSum;
    }

    return result;
}

console.log(sumOfElements([4, 7, 2, 8, 6])); // Output: [27, 25, 17, 10, 4]

结果是一个空数组,从尾到头遍历numbers数组。 找到的每个元素,将其添加到运行总的cumulativeSum 中。 然后将当前的cumulativeSum存储在结果数组的当前索引处。 存储结果并返回。

© www.soinside.com 2019 - 2024. All rights reserved.