LeetCode 978. 最長湍流子陣列
阿新 • • 發佈:2021-02-09
技術標籤:刷題
難度:中等。
開始沒有在迴圈結束後判斷
r
e
s
res
res與
r
i
g
h
t
−
l
e
f
t
+
1
right - left + 1
right−left+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;
}
};