给定一个整数数组,将这个数字和它后面的所有数字相加

Posted

技术标签:

【中文标题】给定一个整数数组,将这个数字和它后面的所有数字相加【英文标题】:Given an array of integer numbers, sum this number and all numbers that after it 【发布时间】:2022-01-04 16:23:54 【问题描述】:

最后我得到数字,如何将其转换为数组?

例子:

输入:4、5、1、2、3、-2

输出:[(13, 9, 4, 3, 1, -2)];

function sumNumbers(numbersList) 
  const data = numbersList.forEach((item, index) => 
    const output = numbersList.reduce(
      (acc, c, i) => (index !== i ? (acc += c) : c),
      0
    );
    console.log(result);

    return output;
  );
  return data;


sumNumbers([4, 5, 1, 2, 3, -2]);

【问题讨论】:

.forEach() 不返回任何内容,因此“忽略”return main 【参考方案1】:

考虑将Array.prototype.forEach 替换为Array.prototype.map(因为我们希望返回值)

function sumNumbers(numbersList) 
  const main = numbersList.map((item, index) => 
    const result = numbersList.reduce(
      (acc, c, i) => (index !== i ? (acc += c) : c),
      0
    );

    return result;
  );
  return main;


console.log(sumNumbers([4, 5, 1, 2, 3, -2]))

说明:

.forEach 返回未定义 (docs)

.map 返回“一个新数组,其中每个元素都是回调函数的结果。” (docs)

【讨论】:

@Andreas 感谢您的回答,这对我帮助很大!我很感激!【参考方案2】:

@tibebes-m 给出的响应,另一种方法(降低复杂度)是向后迭代数组,并且仅使用 reduce 函数(无映射)

const sumNumbers = (list) => list
  .reverse()
  .reduce((acc, next, index) => 
      acc.unshift(next + (acc[0] || 0));
      return acc;
  , []);

console.log(sumNumbers([4, 5, 1, 2, 3, -2]));

【讨论】:

以上是关于给定一个整数数组,将这个数字和它后面的所有数字相加的主要内容,如果未能解决你的问题,请参考以下文章

java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。

java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。

java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。

java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。

java 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。

来自 LeetCode 给定一个整数数组,返回两个数字的索引,使得它们相加到一个特定的目标