题目链接:https://leetcode-cn.com/problems/longest-turbulent-subarray/
class Solution {
public int maxTurbulenceSize(int[] A) {
// 处理特殊情况
if (A.length == 1) {
return 1;
}
// 双左指针
int minLeft = 0,
maxLeft = 0,
right = 0,
maxLength = 0;
// 易错点做指针的移动
while (right + 1 < A.length) {
maxLength = Math.max(maxLength, right - minLeft+1);
maxLength = Math.max(maxLength, right - maxLeft+1);
if (right % 2 == 0) {
// 偶数
if (A[right] >= A[right + 1]) {
// 缩小窗口
minLeft = right+1;
}
if (A[right] <= A[right + 1]) {
maxLeft = right+1;
}
} else {
// 奇数
if (A[right] <= A[right + 1]) {
// 缩小窗口
minLeft = right+1;
}
if (A[right] >= A[right + 1]) {
maxLeft = right+1;
}
}
right++;
}
// right遍历到数组尾部处理
maxLength = Math.max(maxLength, right - minLeft+1);
maxLength = Math.max(maxLength, right-maxLeft+1);
return maxLength;
}
}