Leetcode#1523-在区间范围内统计奇数数目

题目描述

给你两个非负整数 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]内的奇数数目有两种情况,记区间内总数目为n。当n为偶数时,显然奇数数目为n/2,当n为奇数时,那么去除low后的区间中的奇数数目为(n-1)/2,然后只需加上判断low是否是奇数即为奇数数目的结果。
  • 前缀和思想
    记pre(x)为区间[0,x]内的奇数数目,那么pre(x)=⌊(x+1)/2⌋(见思路1),那么区间[low,high]内的奇数数目即为pre(high)-pre(low-1)。

源码

class Solution {
public:
    int pre(int x)
    {
        return (x+1)>>1;
    }
    int countOdds(int low, int high) {
        /*
        int ans=high-low+1;
        if(ans%2==0)
        {
            ans/=2;
        }
        else
        {
            ans=ans/2+(low%2);
        }
        return ans;
        */
        return pre(high)-pre(low-1);
    }
};

题目来源

来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述 给你一个 n 行 m 列的矩阵,最开始的时候,每个单元格中的值都是 0。 另有一个索引数组 indice...
    zhipingChen阅读 3,199评论 0 0
  • 一趟结束后能够确定一个元素的最终位置的排序方法有: 简单选择排序、快速排序、冒泡排序、堆排序 稳定性定义:排序前后...
    Zak1阅读 2,425评论 0 0
  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    医学工程与科学园地阅读 4,994评论 0 1
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 9,801评论 0 13
  • 感觉自己有点神经衰弱,总是觉得手机响了;屋外有人走过;每次妈妈不声不响的进房间突然跟我说话,我都会被吓得半死!一整...
    章鱼的拥抱阅读 6,637评论 4 5

友情链接更多精彩内容