LeetCode 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,中间共有几个奇数?

答案是 10 − 8 2 \frac{10-8}2 210−8个。

如果low是奇数,那么我们令low-1;如果high是奇数,那么我们就令high+1就好了。

  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
cpp 复制代码
/*
 * @LastEditTime: 2026-02-19 17:39:31
 */
class Solution {
public:
    int countOdds(int low, int high) {
        if (low % 2) {
            low--;
        }
        if (high % 2) {
            high++;
        }
        return (high - low) >> 1;
    }
};
Python
python 复制代码
'''
LastEditTime: 2026-02-19 18:00:11
'''
class Solution:
    def countOdds(self, low: int, high: int) -> int:
        if low % 2:
            low -= 1
        if high % 2:
            high += 1
        return (high - low) // 2
Go
go 复制代码
/*
 * @LastEditTime: 2026-02-19 18:02:40
 */
package main

func countOdds(low int, high int) int {
    if low % 2 == 1 {
        low--
    }
    if high % 2 == 1 {
        high++
    }
    return (high - low) / 2
}

解题方法二:思考麻烦点写着容易

不论一个数的奇偶性:

  • [ 1 , l o w ) [1, low) [1,low) 共有几个奇数?答案是 ⌊ l o w 2 ⌋ \lfloor\frac{low}2\rfloor ⌊2low⌋个;
  • 1 , h i g h 1, high 1,high 共有几个奇数?答案是 ⌊ h i g h + 1 2 ⌋ \lfloor\frac{high+1}2\rfloor ⌊2high+1⌋个。

那么 l o w , h i g h low, high low,high 共有几个奇数? 1 , h i g h − 1 , l o w ) \[1, high - 1, low) \[1,high−[1,low) 即为所得。

  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

Java
java 复制代码
/*
 * @LastEditTime: 2026-02-19 18:04:04
 */
class Solution {
    public int countOdds(int low, int high) {
        return (high + 1) / 2 - low / 2;
    }
}
Rust
rust 复制代码
/*
 * @LastEditTime: 2026-02-19 18:06:07
 */
impl Solution {
    pub fn count_odds(low: i32, high: i32) -> i32 {
        (high + 1) / 2 - low / 2
    }
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
HPtiger7 小时前
数据结构——选择排序
数据结构·算法·排序算法
康实训7 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
DongQiShanRen7 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CCblandy7 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
丑梨数据8 小时前
信创环境里跑文档工具:格式兼容与本地合规的几个坑
数据结构·人工智能·算法·决策树·排序算法
erzong2319 小时前
Linux操作系统:线程概念与控制
linux·算法
Nil20810 小时前
leetcode 5最长回文子串
算法·leetcode·职场和发展
xxwl58510 小时前
区域赛分类题解
c++·笔记·学习·算法
m0_6745719710 小时前
力扣 hot 100 python
python·算法·leetcode
青少儿编程课堂11 小时前
蓝桥杯+全国青少年信息素养大赛+电子学会PythonC/C++考级:最长公共子序列LCS解析
c++·python·算法·bfs·信息学竞赛