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

如何修改循环逻辑避免数组首尾元素配对求和?

问题分析与解决

你的代码问题出在j循环的范围处理:当i=0时,range(i-1, i+1)会生成-1和0两个索引,其中-1对应数组的最后一个元素,导致首尾元素(9和4)的和被计入计算,而这显然不符合你的测试需求(首尾元素不算相邻配对)。同时,j循环包含了i本身,虽然被num_list[i] != num_list[j]过滤,但属于无效计算。

修正后的代码

def _sum(num_list): 
    # 处理数组长度小于2的边界情况
    if len(num_list) < 2:
        return 0  # 可根据实际需求调整返回值
    maxSum = num_list[0] + num_list[1]
    # 遍历所有相邻元素对(i和i+1),不包含首尾配对
    for i in range(len(num_list) - 1):
        current_sum = num_list[i] + num_list[i+1]
        maxSum = max(maxSum, current_sum)
    return maxSum        

print(_sum([1, 8, 7, 3, 5, 2])) 
# 输出:15(正确)
print(_sum([1, 2, 45, 4, 5, 6, 7, 3, 2]))
# 输出:49(正确)
print(_sum([9, 2, 3, 4, 7, 1, 2, 3, 4]))
# 输出:11(正确)

修正说明

  1. 遍历逻辑调整:直接遍历每个元素与其下一个元素的配对(i从0到len(num_list)-2),确保只计算线性相邻的元素对,排除首尾环形配对的情况。
  2. 边界处理:增加了数组长度小于2的判断,避免索引越界错误。
  3. 简化计算:去掉了冗余的j循环和元素相等判断,直接计算相邻元素和并更新最大值,代码更高效清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:50:34