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;
    }
}
相关推荐
老赵说11 分钟前
Java基础数据结构全面解析与实战指南:从小白到高手的通关秘籍
数据结构
Sylvia-girl16 分钟前
IO流~~
java·开发语言
铉铉这波能秀21 分钟前
LeetCode Hot100数据结构背景知识之元组(Tuple)Python2026新版
数据结构·python·算法·leetcode·元组·tuple
晚霞的不甘27 分钟前
Flutter for OpenHarmony 实现计算几何:Graham Scan 凸包算法的可视化演示
人工智能·算法·flutter·架构·开源·音视频
冰暮流星29 分钟前
javascript之数组
java·前端·javascript
Re.不晚32 分钟前
JAVA进阶之路——无奖问答挑战3
java·开发语言
㓗冽42 分钟前
60题之内难题分析
开发语言·c++·算法
大江东去浪淘尽千古风流人物43 分钟前
【VLN】VLN仿真与训练三要素 Dataset,Simulators,Benchmarks(2)
深度学习·算法·机器人·概率论·slam
不倒翁玩偶1 小时前
IDEA导入新的SpringBoot项目没有启动按钮
java·spring boot·intellij-idea
静听山水1 小时前
Redis核心数据结构-ZSet
数据结构·redis