gpt4 book ai didi

arrays - Scala 与列表中当前元素和所有过去元素的部分求和

转载 作者:行者123 更新时间:2023-12-02 08:23:16 25 4
gpt4 key购买 nike

我们有一个整数列表,例如:[1,4,5,6,6,7,9]

这个想法是生成一个具有相同长度的列表,并求和直到当前元素,例如:[1,5,10,16,22,29,38]

在 Java 世界中,它看起来像:

int sum = 0;
int[] table = {1,4,5,6,6,7,9}
int[] res = new int[table.length]
for(int i=0; i<table.length; i++) {
sum += table[i]
res[i] = sum
}

我知道存在更优雅、更高效的解决方案。我的问题是如何在 Scala 中以更实用的方式做这样的事情?

谢谢!

最佳答案

您正在寻找扫描组合器。

List(1,4,5,6,6,7,9).scanLeft(0)(_ + _)
res1: List[Int] = List(0, 1, 5, 10, 16, 22, 29, 38)

如果需要,请删除带有尾部的前导元素我不知道不采用初始值的扫描版本。对于这个人来说,复杂度是 O(n),你可以通过一个累加器和一个列表(包含过去的累加器)折叠列表来自己实现它。您将后者视为结果。

关于arrays - Scala 与列表中当前元素和所有过去元素的部分求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29227038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com