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

遍历数组求固定索引组合下abs(3*sum1+5*sum2)的最大值

解决数组滑动窗口求和与极值计算问题

我来帮你搞定这个数组计算的任务,思路和代码实现都整理好了,一步步来:

问题拆解

首先明确我们要做的核心事情:

  • 给定数组 d = [1,2,3,4,5,6,7,8],要生成8种滑动配置:每次sum1取连续3个元素,sum2取剩下的5个元素(数组是循环的,偏移到末尾后会绕回开头)
  • 对每个配置计算 abs(3*sum1 + 5*sum2)
  • 从8个结果里找出最大值

高效实现思路

  1. 循环滑动窗口:因为数组有8个元素,刚好从索引0到7各作为一次sum1的起始点,每次取起始点后3个元素(用模运算%8处理循环边界,避免索引越界)
  2. sum2的简化计算:sum2其实是数组总和减去sum1,不用每次都遍历5个元素,既省代码又提效率
  3. 跟踪最大值:遍历每个配置时,实时更新当前的最大结果,同时可以记录对应的最优配置方便验证

Python代码实现

d = [1, 2, 3, 4, 5, 6, 7, 8]
total_sum = sum(d)
max_result = -float('inf')
best_config = {}

for start_idx in range(8):
    # 计算当前sum1的三个元素(处理循环边界)
    sum1 = d[start_idx] + d[(start_idx + 1) % 8] + d[(start_idx + 2) % 8]
    # sum2 = 总和 - sum1,简化计算
    sum2 = total_sum - sum1
    # 计算当前配置的结果值
    current_val = abs(3 * sum1 + 5 * sum2)
    
    # 更新最大值及对应配置
    if current_val > max_result:
        max_result = current_val
        best_config = {
            "sum1_elements": [d[start_idx], d[(start_idx+1)%8], d[(start_idx+2)%8]],
            "sum2_elements": [d[(start_idx+i)%8] for i in range(3, 8)]
        }

# 输出结果
print(f"最终最大结果值: {max_result}")
print(f"对应的最优配置:")
print(f"sum1元素:{best_config['sum1_elements']}")
print(f"sum2元素:{best_config['sum2_elements']}")

运行结果验证

运行代码后会得到:

  • 最大结果值:168
  • 对应的sum1元素:[1, 2, 3],sum2元素:[4, 5, 6, 7, 8]
  • 手动验证:sum1=1+2+3=6,sum2=4+5+6+7+8=30,代入公式得 abs(3*6 +5*30) = abs(18+150) = 168,完全正确

如果你需要用其他语言实现,核心逻辑是一样的:处理循环滑动窗口、用总和简化sum2计算、跟踪最大值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:11:10