问题描述
小C定义了一个“完美偶数”。一个正整数 x 被认为是完美偶数需要满足以下两个条件:
- x 是偶数;
- x 的值在区间 [l,r][l,r] 之间。
现在,小C有一个长度为 n 的数组 a,她想知道在这个数组中有多少个完美偶数。
测试样例
样例1:
输入:
n = 5,l = 3,r = 8,a = [1, 2, 6, 8, 7]
输出:2
样例2:
输入:
n = 4,l = 10,r = 20,a = [12, 15, 18, 9]
输出:2
样例3:
输入:
n = 3,l = 1,r = 10,a = [2, 4, 6]
输出:3
问题分析
这个问题要求我们在给定的数组中找出“完美偶数”的个数。完美偶数需要满足以下两个条件:
- 该数是偶数。
- 该数在区间 [l,r][l, r][l,r] 之间。
解题思路
- 遍历数组:我们需要遍历数组中的每一个元素,检查它是否满足完美偶数的条件。
- 偶数判断:一个数是偶数当且仅当它对 2 取余等于 0,即
x % 2 == 0。 - 区间判断:一个数是否在区间 [l,r][l, r][l,r] 之间可以通过判断
l <= x <= r来完成。 - 计数:统计满足条件的完美偶数的个数。
代码
def count_perfect_even(n, l, r, a):
count = 0
for num in a:
if l <= num <= r and num % 2 == 0:
count += 1
return count
代码解读
-
输入参数:
n: 数组的长度。l和r: 区间的左右边界。a: 输入的整数数组。
-
循环遍历:我们通过遍历数组
a中的每一个数num,检查它是否满足以下两个条件:l <= num <= r:表示该数在区间 [l,r][l, r][l,r] 内。num % 2 == 0:表示该数是偶数。
如果同时满足这两个条件,就将计数器
count加 1。 -
返回结果:最后返回
count,即满足条件的完美偶数的个数。
复杂度分析
-
时间复杂度:O(n),其中 n 是数组的长度。我们只需要遍历数组一次,并进行常数时间的条件判断。
-
空间复杂度:O(1),我们只使用了常数的额外空间。
豆包AI解题助手使用感慨
这道题目的重点在于题目的理解,如果把问题想得过于复杂,将会浪费大量的时间,通过使用豆包AI刷题助手,我得到了明确的思路分析,使用5行代码解决了问题,并且理清了逻辑,可以说AI助手给了我莫大的帮助。