Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

C++: Đếm cực trị cục bộ trong mảng

Bài toán: Phần tử A[i] là cực trị cục bộ nếu: A[i] < A[i-1] && A[i] < A[i+1] (cực tiểu) HOẶC A[i] > A[i-1] && A[i] > A[i+1] (cực đại). Phần tử đầu/cuối không tính (chỉ 1 láng giềng). Đếm số cực trị.

Code C++

#include <bits/stdc++.h>
using namespace std;

int solve(vector<int> A) {
    int cnt = 0;
    for (int i = 1; i + 1 < (int)A.size(); i++) {
        if ((A[i] < A[i-1] && A[i] < A[i+1]) ||
            (A[i] > A[i-1] && A[i] > A[i+1]))
            cnt++;
    }
    return cnt;
}

int main() {
    vector<int> A = {1, 5, 2, 5};
    cout << solve(A) << endl; // 2 (5 tại i=1 cực đại, 2 tại i=2 cực tiểu)
    return 0;
}

Kết quả

2