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

Python实现最小多米诺旋转:代码异常求问题排查

多米诺旋转问题代码错误分析

你的代码存在以下几类关键错误,导致无法得到正确结果:

  • 遍历索引使用错误:
    在for i in top和for i in bottom循环中,i是列表的元素值而非索引,但后续代码却用top[i]、bottom[i]来取值,这会导致严重的索引越界或取值错误。例如示例输入中top包含元素6,执行top[i]时会尝试访问top[6],但列表长度仅为6,合法索引是0-5,直接触发索引错误。

  • 最高频元素统计逻辑错误:

    1. 每次循环调用top.count(i)会重复统计,时间复杂度高达O(n²),效率极低;
    2. 当多个元素频率相同时,无法正确锁定目标值;
    3. 核心逻辑错误:要让某一行全为同一个数字,这个数字必须在每一对多米诺的上下至少出现一次,而不是仅看单行的最高频元素。比如示例中,虽然上行最高频是2,但你需要确认每个位置的上行或下行都有2,才能通过翻转实现,原代码完全忽略了这个前提。
  • 提前return导致逻辑中断:
    在翻转计数的循环中,第一次遇到需要翻转的元素就执行return counter,直接终止函数,无法完成完整的次数统计。而且return counter之后的if判断代码永远不会被执行,完全失去了判断任务是否可行的作用。

  • 语法与缩进错误:

    • if bottom[i] != num_t和if top[i] != num_b语句末尾缺少冒号:;
    • 判断任务是否可行的if语句被放在return之后,完全无法执行;
    • 翻转逻辑中修改原列表的操作没有意义,且会污染输入参数。
  • 边界情况未处理:
    当上行和下行的最高频元素频率相等时(counter_t == counter_b),代码没有任何处理逻辑,函数会默认返回None,不符合题目要求的返回-1或有效次数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:01:46