1. 程式人生 > 其它 >LeetCode 978. 最長湍流子陣列

LeetCode 978. 最長湍流子陣列

技術標籤:刷題

難度:中等。
開始沒有在迴圈結束後判斷 r e s res res r i g h t − l e f t + 1 right - left + 1 rightleft+1的關係,導致下面用例的結果錯誤:
在這裡插入圖片描述
在訓練結束後再更新 r e s res res就好了。

class Solution {
public:
    int maxTurbulenceSize(vector<int>& arr) {
        int n = arr.size();
        if(n == 1)return n;
        int left =
0, right = 0; int res = 1; int flag = -1; while(right < n - 1){ if(n - left <= res)break; if(flag == -1){ if((left % 2 && arr[left] < arr[left + 1]) || (left % 2 == 0 && arr[left] > arr[left +
1])){ right++; flag = 0; } else if((left % 2 && arr[left] > arr[left + 1]) || (left % 2 == 0 && arr[left] < arr[left + 1])){ right++; flag = 1; }
else{ left++; right++; } } else{ if((!flag && right % 2 && arr[right] < arr[right + 1]) || (!flag && right % 2 == 0 && arr[right] > arr[right + 1]) || (flag && right % 2 && arr[right] > arr[right + 1]) || (flag && right % 2 == 0 && arr[right] < arr[right + 1])){ right++; } else{ if(res < right - left + 1){ res = right - left + 1; } left = right; flag = -1; } } } if(res < right - left + 1){ res = right - left + 1; } return res; } };

在這裡插入圖片描述