A의 부분배열 A[i], A[i+1], ..., A[j]가 다음 조건을 충족할 때 난류라고 합니다. -
따라서 하위 배열의 각 인접 요소 쌍 사이에서 비교 기호가 뒤집히면 하위 배열은 난류입니다. 이제 A의 최대 크기 난류 부분 배열의 길이를 찾으십시오. 따라서 입력이 [9,4,2,10,7,8,8,1,9]와 같으면 출력은 5입니다. 이것은 A[1]> A[2] A[4]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
n :=배열 A의 크기
prevBig :=1, prevSmall :=1, currBig :=1, currSmall :=1 및 ret :=1
범위 1에서 n – 1까지의 i에 대해
리턴 렛
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int maxTurbulenceSize(vector<int>& A) {
int n = A.size();
int prevBig = 1;
int prevSmall = 1;
int currBig = 1;
int currSmall = 1;
int ret = 1;
for(int i = 1; i < n; i++){
if(A[i] > A[i - 1]){
currBig = 1 + prevSmall;
}
if(A[i] < A[i - 1]){
currSmall = 1 + prevBig;
}
ret = max({ret, currBig, currSmall});
prevSmall = currSmall;
prevBig = currBig;
currSmall = 1;
currBig = 1;
}
return ret;
}
};
main(){
vector<int> v1 = {9,4,2,10,7,8,8,1,9};
Solution ob;
cout << (ob.maxTurbulenceSize(v1));
}
입력
[9,4,2,10,7,8,8,1,9]
출력
5