根据题目的要求,我们需要判断数组中有多少个符合条件的“完美偶数”。完美偶数满足以下两个条件:
- 它是偶数。
- 它位于给定区间
[l, r]之间。
解题思路
- 遍历数组中的每个元素。
- 对每个元素检查:
- 是否为偶数。
- 是否在区间
[l, r]内。
- 如果满足这两个条件,计数器加 1。
- 最终返回计数器的值。
代码实现
def solution(n: int, l: int, r: int, a: list) -> int:
# 计数满足条件的完美偶数
count = 0
# 遍历数组中的每个元素
for num in a:
# 判断是否为偶数且在区间[l, r]内
if num % 2 == 0 and l <= num <= r:
count += 1
# 返回完美偶数的个数
return count
# 测试样例
if __name__ == '__main__':
print(solution(5, 3, 8, [1, 2, 6, 8, 7]) == 2)
print(solution(4, 10, 20, [12, 15, 18, 9]) == 2)
print(solution(3, 1, 10, [2, 4, 6]) == 3)
代码解释
count = 0:初始化计数器,记录满足条件的完美偶数个数。for num in a::遍历数组a中的每个元素num。if num % 2 == 0 and l <= num <= r::检查当前元素是否满足偶数条件和区间范围条件。num % 2 == 0:检查是否为偶数。l <= num <= r:检查是否在区间[l, r]内。
count += 1:如果满足条件,计数器加 1。return count:返回计数器的值,即完美偶数的个数。
时间复杂度
- 遍历数组
a一次,每个元素进行常数时间的判断操作,时间复杂度为O(n),其中n是数组的长度。
测试样例
-
输入:
n = 5, l = 3, r = 8, a = [1, 2, 6, 8, 7]- 输出:
2 - 完美偶数是
6和8,因此输出为2。
- 输出:
-
输入:
n = 4, l = 10, r = 20, a = [12, 15, 18, 9]- 输出:
2 - 完美偶数是
12和18,因此输出为2。
- 输出:
-
输入:
n = 3, l = 1, r = 10, a = [2, 4, 6]- 输出:
3 - 完美偶数是
2、4和6,因此输出为3。
- 输出:
这个实现符合题目的要求,且能够正确地处理不同的输入情况。
总结,这道题可能对于大佬很简单,但对我这种小白来说,感觉是一道思路清晰顺畅的题,记录一下。