Giả sử chúng ta có một mảng A với n phần tử. Một số phần tử của mảng A [i] này được gọi là cực tiểu cục bộ nếu và chỉ khi nó nhỏ hơn cả hai phần tử lân cận của nó. Ngoài ra, nếu nó lớn hơn các hàng xóm của nó, nó sẽ là cực đại cục bộ. Đối với A [0] và A [n-1] vì chỉ có một lân cận nên chúng không phải là cực đại hay cực tiểu. Chúng ta phải tìm số cực trị cục bộ trong mảng đã cho.
Vì vậy, nếu đầu vào là A =[1, 5, 2, 5], thì đầu ra sẽ là 2, vì 5 tại A [1] là cực đại cục bộ và 2 tại A [2] là cực tiểu cục bộ.
Các bước
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
sum:=0n:=size of Afor khởi tạo i:=1, khi iA [i + 1] và A [i]> A [i - 1]), thì:(tăng tổng lên 1) trả về tổng Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#includeusing namespace std; int Giải (vector A) {int sum =0; int n =A.size (); for (int i =1; i A [i + 1] &&A [i]> A [i - 1])) sum ++; return sum;} int main () {vector A ={1, 5, 2, 5}; cout < Đầu vào
{1, 5, 2, 5}Đầu ra
2