给你两个非负整数 low
和 high
。请你返回 low
和 high
之间(包括二者)奇数的数目。
其实这个也不难,先来一个简单的解法,那就是从low遍历到高位,找出所有的奇数的数目就行,但是这种方法需要消耗大量的时间,所以最好不要使用,我们得使用别的方法,那么我们得怎么写呢?首先我们应该知道,偶数的数目减奇数的数目的绝对值要么是1要么是0,所以我们可以知到奇数的数目至少是(high-low)/2。现在我们就要来判断什么时候是1的时候,而是1的时候就要总数就要加1。那么什么时候是1呢?其实是low和high都不是偶数时就是1,如果有一个是偶数,那么总的奇数就是(high-low)/2;为什么是怎么样的呢?我们可以随便拿来两个数字看看是不是这样,至于为什么,那么我只能说就是这样的。下面是代码。
int countOdds(int low, int high) {
int amount=0;
if(low%2==0&&high%2==0)
{
amount=(high-low)/2;
}
else
{
amount=(high-low)/2+1;
}
return amount;
}