完美偶数 | 豆包MarsCode AI刷题

68 阅读2分钟

根据题目的要求,我们需要判断数组中有多少个符合条件的“完美偶数”。完美偶数满足以下两个条件:

  1. 它是偶数。
  2. 它位于给定区间 [l, r] 之间。

解题思路

  1. 遍历数组中的每个元素。
  2. 对每个元素检查:
    • 是否为偶数。
    • 是否在区间 [l, r] 内。
  3. 如果满足这两个条件,计数器加 1。
  4. 最终返回计数器的值。

代码实现

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)

代码解释

  1. count = 0:初始化计数器,记录满足条件的完美偶数个数。
  2. for num in a::遍历数组 a 中的每个元素 num
  3. if num % 2 == 0 and l <= num <= r::检查当前元素是否满足偶数条件和区间范围条件。
    • num % 2 == 0:检查是否为偶数。
    • l <= num <= r:检查是否在区间 [l, r] 内。
  4. count += 1:如果满足条件,计数器加 1。
  5. return count:返回计数器的值,即完美偶数的个数。

时间复杂度

  • 遍历数组 a 一次,每个元素进行常数时间的判断操作,时间复杂度为 O(n),其中 n 是数组的长度。

测试样例

  1. 输入: n = 5, l = 3, r = 8, a = [1, 2, 6, 8, 7]

    • 输出: 2
    • 完美偶数是 68,因此输出为 2
  2. 输入: n = 4, l = 10, r = 20, a = [12, 15, 18, 9]

    • 输出: 2
    • 完美偶数是 1218,因此输出为 2
  3. 输入: n = 3, l = 1, r = 10, a = [2, 4, 6]

    • 输出: 3
    • 完美偶数是 246,因此输出为 3

这个实现符合题目的要求,且能够正确地处理不同的输入情况。

总结,这道题可能对于大佬很简单,但对我这种小白来说,感觉是一道思路清晰顺畅的题,记录一下。