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

修复Python数组主元素索引查找代码:判断最大元素是否为其他元素两倍

我来帮你搞定这段代码的问题!先拆解下原代码里的几个关键错误:

原代码问题分析
  • 逻辑搞反了:你现在写的是只要碰到一个元素满足max_num >= 2*num就立刻返回索引,但我们要的是所有其他元素都得满足这个条件才行——只要有一个元素不达标,就应该返回-1。
  • 索引调用错误:循环里的num.index(max_num)完全不对,num是数组里的单个元素,不是数组本身,之前已经存好的max_i才是我们要的最大值索引。
  • 没排除最大值自身:循环时会把最大值和自己比较(比如max_num >= 2*max_num,只有当最大值是0时才成立),这会干扰判断结果。
修复后的代码
def dominantIndex(self, nums):
    # 单个元素直接返回索引0,不用多此一举调用index
    if len(nums) == 1:
        return 0
    
    max_num = max(nums)
    max_i = nums.index(max_num)
    
    # 遍历所有元素,跳过最大值本身,逐个检查是否符合要求
    for num in nums:
        if num == max_num:
            continue
        # 只要有一个元素不满足,直接返回-1
        if max_num < 2 * num:
            return -1
    
    # 所有元素都达标,返回最大值的索引
    return max_i
测试用例验证

我们来跑你给出的三个输入,看看结果:

  • 输入[1,0]:最大值是1(索引0),检查0:1 >= 2*0 成立,返回 0
  • 输入[0,3,4,8]:最大值是8(索引3),分别检查0、3、4,都满足8 >= 2*元素的条件,返回 3
  • 输入[0,3,5,2]:最大值是5(索引2),检查3时发现5 < 2*3=6,直接返回 -1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:58:49