1523.在区间范围内统计奇数数目:两种方法O(1)算
【LetMeFly】1523.在区间范围内统计奇数数目:两种方法O(1)算
力扣题目链接:https://leetcode.cn/problems/count-odd-numbers-in-an-interval-range/
给你两个非负整数 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
解题方法一:思考容易写着麻烦点
low和high都是偶数的示例 2:low = 8, high = 10,中间共有几个奇数?
答案是$\frac{10-8}2$个。
如果low是奇数,那么我们令low-1;如果high是奇数,那么我们就令high+1就好了。
- 时间复杂度$O(1)$
- 空间复杂度$O(1)$
AC代码
C++
1 | |
Python
1 | |
Go
1 | |
解题方法二:思考麻烦点写着容易
不论一个数的奇偶性:
- $[1, low)$ 共有几个奇数?答案是$\lfloor\frac{low}2\rfloor$个;
- $[1, high]$ 共有几个奇数?答案是$\lfloor\frac{high+1}2\rfloor$个。
那么 $[low, high]$ 共有几个奇数? $[1, high] - [1, low)$ 即为所得。
- 时间复杂度$O(1)$
- 空间复杂度$O(1)$
AC代码
Java
1 | |
Rust
1 | |
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源
1523.在区间范围内统计奇数数目:两种方法O(1)算
https://blog.letmefly.xyz/2026/02/19/LeetCode 1523.在区间范围内统计奇数数目/