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

LeetCode第1523题:区间奇数计数代码错误排查及正确实现

LeetCode 1523题「区间范围内奇数的数目」错误分析与正确解法

错误原因

你的代码存在两个问题:

  1. 循环范围遗漏了high值:Python的range(low, high)是左闭右开区间,只会遍历low到high-1的数。当测试用例low=3、high=7时,循环只处理了3、4、5、6,漏掉了7这个奇数,所以输出2而不是预期的3。
  2. 遍历法效率低下:当high和low差距极大时,遍历整个区间的时间复杂度为O(n),远不如数学公式计算高效。

修正后的遍历实现

只需将循环范围改为包含high即可:

class Solution:
    def countOdds(self, low: int, high: int) -> int:
        count = 0
        for i in range(low, high + 1):
            if i % 2 != 0:
                count += 1
        return count

高效数学公式解法

通过数学推导可以直接计算出结果,时间复杂度为O(1):

  • 公式逻辑:(high + 1) // 2 是从0到high的奇数总数,low // 2 是从0到low-1的奇数总数,两者相减即为[low, high]区间内的奇数数目。

代码实现:

class Solution:
    def countOdds(self, low: int, high: int) -> int:
        return (high + 1) // 2 - low // 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:35:36