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;
    }
}
相关推荐
Kin__Zhang1 小时前
随手记录 UE4/CARLA 仿真器 segmentation fault
android·java·ue4
期待のcode1 小时前
MyBatis-Plus通用Service
java·后端·mybatis·springboot
程序员-周李斌1 小时前
ArrayBlockingQueue 源码解析
java·开发语言·后端·哈希算法·散列表
surtr11 小时前
Round 1019(div2) CD
数据结构·c++·算法·贪心算法·stl
Hcoco_me1 小时前
大模型面试题14:K-means聚类算法全解析(通用场景+深度拓展)
算法·kmeans·聚类
编程修仙2 小时前
第一篇 认识SpringBoot
java·spring boot
骇客野人2 小时前
.gitignore文件常用设置
java
Jay20021112 小时前
【机器学习】30 基于内容的过滤算法
人工智能·算法·机器学习
冰西瓜6002 小时前
分治(二)算法设计与分析 国科大
数据结构·算法