1.题目介绍

给你两个非负整数 low 和 high 。请你返回low和high之间(包括二者)奇数的数目。
示例 1:
输入:low = 3, high = 7
输出:3
解释:3 到 7 之间奇数数字为 [3,5,7] 。
示例 2:
输入:low = 8, high = 10
输出:1
解释:8 到 10 之间奇数数字为 [9] 。
2.代码呈现
错误想法:
这道题目很多人都会进入一个误区,直接使用循环就好了,但是这样子一旦low和high数字较大,那么遍历时间将会变得非常长,所以这种方法回超时
正确想法:
a.可以根据high和low是否是奇数和偶数进行简单if判断
b.若两端都是偶数,那就是(high-low)/2
b.若两端都是奇数,那就是(high-low)/2+1,因为端点会少算一次
c.若两端一个奇数,一个偶数,那就是(high-low)/2+1,因为也会出现端点少算一次的情况
d.上述b.c可以综合起来放在一块
错误代码:
class Solution:
def countOdds(self, low: int, high: int) -> int:
nums=0
for i in range(low,high+1):
if i%2!=0
nums+=1
return nums
正确代码:
class Solution:
def countOdds(self, low: int, high: int) -> int:
nums=0
if low%2==0 and high%2==0:
return int((high-low)/2)
else:
return int((high-low)/2+1)