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

整数序列方向变化次数统计程序bug排查:输出结果不符预期

问题分析与修复

原代码的Bug点

  1. 初始方向错误:将a初始设为0,会与第一个元素产生无意义的初始方向(第一个元素前没有前置元素,不应存在方向),导致后续把「中性→第一个有效方向」的变化错误计入次数。
  2. 无用分支:elif b != 0分支永远不会执行,因为前面已经判断了b>0和b<0,剩余情况只有b=0。
  3. 未过滤中性方向:代码没有区分「中性方向(不变)」和「有效方向(递增/递减)」,导致把中性与有效方向的切换也算作方向变化,不符合预期。

修复思路

聚焦有效方向(递增/递减)之间的变化,忽略中性方向的干扰:

  1. 先计算序列中相邻元素的差值,过滤掉差值为0的中性项。
  2. 仅统计过滤后有效差值的符号变化次数(正变负或负变正)。

修复后的代码

def changing_direction(elements: list[int]) -> int:
    # 计算相邻元素的差值,过滤掉中性差值(0)
    diffs = []
    for i in range(1, len(elements)):
        diff = elements[i] - elements[i-1]
        if diff != 0:
            diffs.append(diff)
    
    count = 0
    # 统计有效差值的符号变化次数
    for i in range(1, len(diffs)):
        prev_sign = diffs[i-1] > 0
        curr_sign = diffs[i] > 0
        if prev_sign != curr_sign:
            count += 1
    
    return count

print("Example:")
print(changing_direction([6, 6, 6, 4, 1, 2, 5, 9, 7, 8, 5, 9, 4, 2, 6]))

验证结果

运行修复后的代码,输出为7,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:54:24