leetcode_1523 在区间范围内统计奇数数目

285 阅读1分钟

要求

给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。

示例 1:

输入:low = 3, high = 7
输出:3
解释:3 到 7 之间奇数数字为 [3,5,7]

示例 2:

输入:low = 8, high = 10
输出:1
解释:8 到 10 之间奇数数字为 [9]

提示:

  • 0 <= low <= high <= 10^9

核心代码

class Solution:
    def countOdds(self, low: int, high: int) -> int:
        if (high - low) % 2 == 1:
            return (high - low) // 2 + 1
        else:
            ans = (high - low) // 2
            ans += 1 if high % 2 == 1 and low % 2 == 1 else 0
            return ans 

image.png

解题思路:比较简单的一道题,不过我们需要分奇数和偶数两种,奇数的话,必然是一个奇数在头或者尾,最后结果直接是一半加1,如果是偶数的话,我们需要判断是不是奇数开头和结尾,是的话我们需要加上1,不是的话,我们不用管。