LeetCode 978 最長湍流子陣列

2022-06-24 17:45:15 字數 877 閱讀 3054

哎。。。滑動視窗的題目,自己猜到了要用滑動視窗,但是沒做出來;

這道題目用滑動視窗和dp都可以;

如果採用滑動視窗的記錄前一位標誌位,right和right-1比較,會丟失一部分序列;

例如:9,4,2,10,7,8;

湍流數列應該為:4,2,10,7,8;

但是如果採用我的滑動視窗比較會變為:2,10,7,8;

原因是當記錄了9,4,2之後,會從2重新開始計算湍流,而不是從4開始;

附錯誤**:

int maxturbulencesize(vector&arr) 

if (right == 1

) else

if ((!flag & arr[right] > arr[right - 1])||(flag & arr[right] < arr[right - 1

]))

else}}

return

cnt;

}

如果採用三位比較,這樣對於9,4,2,10,7,8;

對於判斷4的時候,如果判斷

當4不滿足的時候,判斷可以從4重新判斷,而不會從2開始判斷,更簡單一點;

使用dp,維護兩個陣列來進行遍歷;

所以,狀態轉移方程為:

int maxturbulencesize(vector& arr) 

else if (arr[i - 1] > arr[i])

else

res = max(res, max(up[i], down[i]));

} return res;

}

Leetcode 978 最長湍流子陣列

當a的子陣列a i a i 1 a j 滿足下列條件時,我們稱其為湍流子陣列 也就是說,如果比較符號在子陣列的相鄰元素對之間反轉,則子陣列是湍流子陣列。返回a的最大湍流子陣列的長度。示例1 輸入 9,4,2,10,7,8,8,1,9 輸出 5 解釋 a 1 a 2 a 3 a 4 a 5 本題最容易...

leetcode 978 最長湍流子陣列

陣列 dp 當a的子陣列a i a i 1 a j 滿足下列條件時,我們稱其為湍流子陣列 也就是說,如果比較符號在子陣列中的每個相鄰元素對之間翻轉,則該子陣列是湍流子陣列。返回a的最大湍流子陣列的長度。示例 1 輸入 9,4,2,10,7,8,8,1,9 輸出 5解釋 a 1 a 2 a 3 a 4...

leetcode978 最長湍流子陣列

當 a 的子陣列 a i a i 1 a j 滿足下列條件時,我們稱其為湍流子陣列 若 i k j,當 k 為奇數時,a k a k 1 且當 k 為偶數時,a k a k 1 或 若 i k j,當 k 為偶數時,a k a k 1 且當 k 為奇數時,a k a k 1 也就是說,如果比較符號在...