AI 刷题 完美偶数计数 题解 | 豆包MarsCode AI刷题

32 阅读2分钟

题目要求我们从数组中找出满足两个条件的“完美偶数”,其中条件如下:

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

解题思路

我们可以通过以下步骤来解决这个问题:

  1. 检查偶数:首先,对于每个数字,判断它是否是偶数。偶数的判断条件是 x % 2 == 0
  2. 检查区间:其次,判断该数字是否在给定的区间 [l, r] 内,即满足 l <= x <= r
  3. 计数符合条件的完美偶数:对于数组中的每个元素,如果它满足上述两个条件,就将计数器加 1。

代码实现

我们可以通过简单的遍历数组来检查每个数字是否符合条件。为了实现这一点,定义一个计数器 count,对于每个数字,我们进行偶数和区间检查,并在符合条件时增加计数器。

代码如下:

#include <iostream>
#include <vector>
#include <string>

using namespace std;


int solution(int n, int l, int r, std::vector<int>& a) {
    int count = 0;
    
    // 遍历数组中的每个数字
    for (int i = 0; i < n; ++i) {
        // 检查是否是偶数并且在[l, r]区间内
        if (a[i] % 2 == 0 && a[i] >= l && a[i] <= r) {
            count++;  // 满足条件,计数增加
        }
    }
    
    return count;
}

int main() {
    vector<int> a1 = {1, 2, 6, 8, 7};
    cout << (solution(5, 3, 8, a1) == 2) << endl;

    vector<int> a2 = {12, 15, 18, 9};
    cout << (solution(4, 10, 20, a2) == 2) << endl;

    vector<int> a3 = {2, 4, 6};
    cout << (solution(3, 1, 10, a3) == 3) << endl;
}

时间复杂度

  • 时间复杂度O(n),其中 n 是数组的长度。我们只遍历了一遍数组,且每个元素的检查操作是常数时间操作。
  • 空间复杂度O(1),我们只用了常数的额外空间,除去输入的数组。