n개의 요소가 있는 배열 A가 있다고 가정합니다. 이 배열 A[i]의 일부 요소는 두 인접 요소보다 엄격하게 작은 경우에만 국소 최소값이라고 합니다. 또한 이웃보다 엄격하게 크면 로컬 최대값이 됩니다. A[0] 및 A[n-1]의 경우 이웃이 하나뿐이므로 최대 또는 최소가 아닙니다. 주어진 배열에서 극값의 수를 찾아야 합니다.
따라서 입력이 A =[1, 5, 2, 5]와 같으면 출력은 2가 됩니다. A[1]의 5는 극대값이고 A[2]의 2는 극소값이기 때문입니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
sum :=0n :=A의 크기 초기화 i :=1, iA[i + 1] 및 A[i]> A[i - 1]), 다음:(1만큼 합계 증가) 합계 반환사전> 예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include네임스페이스 std;int solve(vector A){ int sum =0; 정수 n =A.크기(); for (int i =1; i A[i + 1] &&A[i]> A[i - 1])) 합계++; 반환 합계;}int main(){ vector A ={ 1, 5, 2, 5 }; cout <<해결(A) < 입력
{ 1, 5, 2, 5 }출력
2