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

Leetcode区间奇数统计代码:为何结果自动向下取整?

解答:LeetCode统计区间奇数代码中的取整机制

这是LeetCode里一道统计区间内奇数数量的题目:给定两个非负整数low和high,返回[low, high](包含两端)内的奇数个数。给出的高效实现代码如下:

class Solution(object):
     def countOdds(self, low, high):
        high = high + 1
        c = high/2 - low/2
        return c

问题核心:Python整数除法的行为

你疑惑的点在于输入low=8、high=10时,数学计算得1.5但代码返回1,这是Python整数除法的特性导致的:

  • 若运行环境是Python 2,运算符/对两个整数执行的是地板除法(向下取整)——直接舍弃小数部分,只保留整数商。比如:
    • high + 1 = 11,11/2的结果是5(而非5.5)
    • 8/2的结果是4
    • 最终5-4=1,返回整数1。
  • 若是在Python 3环境中,/会返回浮点数,此时计算结果会是1.5,但LeetCode题目要求返回整数,这种情况代码会不符合要求。所以你看到的代码能正确返回结果,说明它是运行在Python 2环境下,或者实际代码中用的是Python 3的地板除运算符//(效果和Python 2的/完全一致)。

补充:公式的逻辑本质

这个代码的思路其实是统计[0, high+1)范围内的奇数个数,减去[0, low)范围内的奇数个数,差值就是[low, high]内的奇数总数。而整数地板除刚好完美匹配这个统计逻辑——每两个连续数里有一个奇数,整数除法直接得到完整的奇数数量,不需要额外取整操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:05:13