LC 1523.Count Odd Numbers in an Interval Range
题目描述
这是 LeetCode
上的 1523.
在区间范围内统计奇数数目 ,难度为简单。
给你两个非负整数 low
和 high
。请你返回
low
和 high
之间(包括二者)奇数的数目。
示例 1:
1 |
|
示例 2:
1 |
|
提示:
0 <= low <= high <= 10^9
解答
方法一:数学
显然这是个数学问题,对 low
之后的奇数个数设为
x
,接下来我们分奇偶进行讨论:
- 当
low
为奇数,high
为奇数时:\(low + 2x = high\),自然就有 \(x = \frac{high - low}{2}\),加上low
,奇数个数为 \(x + 1\)。 - 当
low
为奇数,high
为偶数时:\(low + 2x = high - 1\),自然就有 \(x = \frac{high - low - 1}{2}\),加上low
,奇数个数为 \(x + 1\)。 - 当
low
为偶数,high
为奇数时:\(low + 1 + 2x = high\),自然就有 \(x = \frac{high - low - 1}{2}\),加上low + 1
,奇数个数为 \(x + 1\)。 - 当
low
为偶数,high
为偶数时: \(low + 1 + 2x = high - 1\),自然就有 \(x = \frac{high - low - 2}{2}\),加上low + 1
奇数个数为 \(x + 1\)。
归纳上面的结果可以得到奇数的个数为 \(\frac{high - low - a}{2} + a\),其中
a
为 low
和 high
两个数中奇数的个数。
由于上面的除法保证了分母一定为偶数,所以不需要担心除法是否整除的问题。
1 |
|
时间复杂度:\(O(1)\)。
空间复杂度:\(O(1)\)。
每题一图
LC 1523.Count Odd Numbers in an Interval Range
https://chen-huaneng.github.io/2024/01/09/2024-1-9-2024-01-09-lc-1523/