Java:如何将同一数组中的数组元素一一求和

标签 java

我已经搜索并思考了很多,但无法想出解决方案。

给定一个数字数组,我应该将每个元素与下一个元素相加,并将其写入同一个数组中,然后一次又一次,直到数组的第一个位置 [0] 包含所有元素的总和。
例如:test[] = {1, 2, 3, 4, 5}
下一步是:
test[0] = test[0] + test[1] = 1 + 2 = 3;
test[1] = test[2] + test[3] = 3 + 4 = 7;
test[2] = test[4] = 5;
数组变为:{3, 7, 5, 4, 5}

然后再次重复:
test[0] = test[0] + test[1] = 3 + 7 = 10;
test[1] = test[3] = 5;
数组变为:{10, 5, 5, 4, 5}

最后再次:
test[0] = test[0] + test[1] = 10 + 5 = 15;
数组变为:{15, 5 , 5, 4, 5}

我知道列表是正确的解决方案,但练习是用一个简单的数组来解决它。 欢迎所有建议!

再说一次:这个任务不是关于效率,而是关于使用数组来解决它。 抱歉,这是我的第一篇文章,看起来很乱。

编辑:
我想到的是:
for (int i = 0; i < test.length - (test.length / 2); i++) { test[i] = test[2 * i] + test[2 * i + 1]; }
但它仅在给定数字为偶数的情况下才有效,并且需要在循环中重复正确的次数。

最佳答案

这很困惑,但是有效。它会就地修改数组,每次覆盖数组的一半(总和),奇数数量保留在原地。

int[] test = { 1, 2, 3, 4, 5, 6 };
int l = test.length;
do {
    l = sumTo(test, l);
} while (l > 1);
System.out.println(Arrays.toString(test));

sumTo 接受两个参数,要修改的数组和要求和的索引。

int sumTo(int[] ar, int to) {
    int i;
    for (i = 0; i < to; i += 2) {
        if (i == to - 1)
            ar[i / 2] = ar[i];
        else
            ar[i / 2] = ar[i] + ar[i + 1];
        }
    return (i + 1) / 2;
}

关于Java:如何将同一数组中的数组元素一一求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24517732/

相关文章:

java - 动态加载 Spring Integration 组件

java - 在 Spark 中保存和读取键值对

java - Java 中的线程。在新线程中创建每个图形,循环不起作用

java - Play 1.2.x 使用数据库时出现奇怪的事情

java - 重新打开 Android 应用程序时 SQLite 表为空

java - Gradle 同步失败 - Android Studio 2.3.1

java - Spring ResourceLoader 在 JAR 中找不到资源

java - ORA-00904 JPA EclipseLink 2.1 标识符无效

java - 在遍历列表时按索引从列表中删除项目

java - 如何使用 web.xml 左右从 java 应用程序禁用 rest 端点