You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效地从整数数组中每次提取3个元素进行累加操作

高效处理数组每3个元素一组的求和问题

你的思路完全没问题,只是需要用循环来自动化处理所有分组,而不是手动写每一组的提取逻辑。这里有几种简洁高效的实现方式:

基础循环实现(适配固定长度数组)

因为你的数组刚好是300个元素(3的整数倍),可以直接用步长为3的for循环,每次定位到每组的起始索引,然后提取该组的三个元素:

int[] dates = new int[300];
// 假设这里已完成文件读取,填充了dates数组

int totalSum = 0; // 用于累加所有组的和,根据你的需求调整
List<Integer> groupSums = new ArrayList<>(); // 如果需要单独保存每组的和

for (int i = 0; i < dates.length; i += 3) {
    // 提取当前组的三个元素
    int num1 = dates[i];
    int num2 = dates[i + 1];
    int num3 = dates[i + 2];
    
    int currentGroupSum = num1 + num2 + num3;
    totalSum += currentGroupSum; // 累加总和
    groupSums.add(currentGroupSum); // 保存每组结果
    // 这里可以添加你需要的其他处理逻辑
}

这种方式的时间复杂度是O(n),遍历一次数组即可,非常高效,而且逻辑清晰易懂。

兼容可变长度数组的鲁棒实现

如果以后数组长度可能不是3的整数倍,可以在内部加一个小循环处理剩余元素,避免数组越界:

int[] dates = new int[300];
// 填充数组逻辑

List<Integer> groupSums = new ArrayList<>();

for (int i = 0; i < dates.length; i += 3) {
    int currentSum = 0;
    // 最多处理3个元素,同时避免超出数组边界
    for (int j = 0; j < 3 && i + j < dates.length; j++) {
        currentSum += dates[i + j];
    }
    groupSums.add(currentSum);
    // 执行你的处理逻辑
}

总结

你一开始手动提取前三个元素的思路是正确的,只是缺少了循环来批量处理后续分组。上面的两种方式都能高效完成需求,第一种更适合你当前固定300个元素的场景,代码更简洁;第二种则更通用,能适配各种长度的数组。

内容的提问来源于stack exchange,提问作者Diante Page

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 13:47:50