A.每日一题——1523. 在区间范围内统计奇数数目

题目链接:1523. 在区间范围内统计奇数数目(简单)

算法原理:

解法:前缀和思想

击败100.00%

时间复杂度O(1)

一次遍历相信大家都会,但时间复杂度会达到O(N),题目要求统计区间内的奇数,恰好奇数偶数是连续存在的,那有没有更快的方法呢?有的!兄弟有的!

既然是一奇一偶,那么÷2不就得了?不对的,这里要视边界而论

我们选择区间low,high

当low是奇数时,它前面的奇数在[0,low),有low/2个

当low是偶数时,它前面的奇数在[0,low),也是low/2个

当high是奇数时,它前面的奇数在[0,high),但它自己也要算上,所以是high/2+1个

当high是偶数时,它前面的奇数在[0,high),是high/2个

由于 / 在int中只会取整数,所以high是偶数时可以写成(high+1)/2个,这与high是奇数时的high/2+1是等价的,所以都可以写成(high+1)/2

那么直接返回 (high+1)/2-low/2就行了

Java代码:

java 复制代码
class Solution {
    public int countOdds(int low, int high) {
        return (high+1)/2-low/2;
    }
}
相关推荐
BothSavage1 小时前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn1 小时前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
人活一口气1 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
烬羽2 小时前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
NE_STOP3 小时前
Vibe Coding -- 完整项目案例实操
java
荣码3 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing3 小时前
Google第三方授权登录
java·后端·程序员
明月光8183 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑12 小时前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯13 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式