分析
设置两个变量up和down,初值都为1,之后如果当前的数比上一个大,就加到下降的序列长度下。同时把上升的长度赋值为1
每次更新完距离之后就更新ans,最终输出答案。
C++代码
class Solution {
public:
int n,up=1,down=1,ans; //上升的湍流序列长度,下降的湍流序列长度,最终最大长度。
int maxTurbulenceSize(vector<int>& arr) {
n=arr.size();
if(n==1) return 1;
for(int i=1;i<n;i++)
{
if(arr[i]>arr[i-1]) up=down+1,down=1;
else if(arr[i]<arr[i-1]) down=up+1,up=1;
else up=1,down=1;
ans=max(ans,max(up,down));
}
return ans;
}
};