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