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

修正列表ground值求解代码:break后终止,禁止输出max(b)

问题解决与代码修改

问题分析

原代码的核心问题是:当找到等于目标值k的元素并执行break后,后续的print(max(b))仍会执行,导致输出错误结果;同时未处理没有任何元素小于或等于k的边界情况(此时会因b为空触发max()函数报错)。

修改后的代码

n, k = map(int, input().split())
a = list(map(int, input().split()))
b = []
for i in range(n):
    if k == a[i]:
        print(i)
        break
    elif a[i] < k:
        b.append(i)
else:
    # 循环未触发break,说明未找到等于k的元素
    if b:
        print(max(b))
    else:
        # 无任何元素小于k,输出-1
        print(-1)

关键修改说明

  • 利用for循环的else分支:Python中for循环的else块仅在循环正常结束(未被break中断)时执行,这样找到等于k的元素并break后,就不会再执行后续的print(max(b))。
  • 处理边界情况:增加对b是否为空的判断,若所有元素都大于k,直接输出-1,避免max()函数报错。
  • 适配输入要求:替换硬编码的测试数据,改为从标准输入读取n、k和列表元素,符合题目输入规范。

复杂度验证

  • 时间复杂度:O(n),仅遍历一次列表,每个元素处理时间为常数。
  • 空间复杂度:O(n),最坏情况下(所有元素都小于k),列表b会存储所有元素的索引,满足题目约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:45:29