leetcode978 最長湍流子陣列

2021-10-02 18:12:15 字數 1124 閱讀 1999

當 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]。

也就是說,如果比較符號在子陣列中的每個相鄰元素對之間翻轉,則該子陣列是湍流子陣列。

返回 a 的最大湍流子陣列的長度。

示例 1:

輸入:[9,4,2,10,7,8,8,1,9]

輸出:5

解釋:(a[1] > a[2] < a[3] > a[4] < a[5])

示例 2:

輸入:[4,8,12,16]

輸出:2

示例 3:

輸入:[100]

輸出:1

我是用滑動視窗解的,因為最近在練這個。右邊視窗移動的條件:前乙個是小於,這次比較是大於或者前乙個是大於,這次比較是小於,用flag記錄前一次比較是什麼情況;還有一種情況是前一次不滿足湍流陣列,使flag等於0.經過上述判斷後還不滿足的,就表示當前視窗內部不是乙個湍流陣列,需要移動i,把i移動到j的前乙個,對於[9,4,2,10,7,8,8,1,9],第一次修改i,i會到4的位置,並且下一次的j需要從2開始。但是這麼寫會在之後的8,8往復迴圈,所以在還要判斷乙個是否相等的情況。沒有任何優化,看著也很醜,不過思路還算比較清晰的。10ms.

public

intmaxturbulencesize

(int

a)i=j-1;

j--; flag=0;

} result=math.

max(j-i+

1, result);}

return result;

}

leetcode 7/100

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...

leetcode 978 最長湍流子陣列

關注相鄰兩個數字之間的符號就可以了。如果用 0,1,2代表比較符的話 分別對應 這些交替的比較符會形成若干個連續的塊 我們知道何時乙個塊會結束 當已經到符號串行末尾的時候或者當序列元素不再交替的時候。int maxturbulencesize int a,int asize int flag 0 0...