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;
    }
}
相关推荐
人工智能AI酱5 分钟前
【AI深究】逻辑回归(Logistic Regression)全网最详细全流程详解与案例(附大量Python代码演示)| 数学原理、案例流程、代码演示及结果解读 | 决策边界、正则化、优缺点及工程建议
人工智能·python·算法·机器学习·ai·逻辑回归·正则化
WangLanguager7 分钟前
逻辑回归(Logistic Regression)的详细介绍及Python代码示例
python·算法·逻辑回归
m0_518019489 分钟前
C++与机器学习框架
开发语言·c++·算法
一段佳话^cyx13 分钟前
详解逻辑回归(Logistic Regression):原理、推导、实现与实战
大数据·算法·机器学习·逻辑回归
qq_4176950515 分钟前
C++中的代理模式高级应用
开发语言·c++·算法
daidaidaiyu21 分钟前
Spring IOC 源码学习 事务相关的 BeanDefinition 解析过程 (XML)
java·spring
xiaoye-duck39 分钟前
《算法题讲解指南:动态规划算法--路径问题》--5.不同路径,6.不同路径II
c++·算法·动态规划
ambition202421 小时前
最大子数组和算法全解析:从暴力枚举到动态规划优化
数据结构·c++·算法
没头脑的男大1 小时前
关于删除列表的那些事儿
算法
Book思议-1 小时前
【数据结构实战】线性表的应用
c语言·数据结构·算法·链表