978 最長湍流子陣列

2021-10-25 15:43:05 字數 895 閱讀 1160

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

1.dp,明顯的有子狀態遞推   

2.滑動視窗

class solution:

def maxturbulencesize(self, arr: list[int]) -> int:

n=len(arr)

up=[1 for _ in range(n)]

down=[1 for _ in range(n)]

for i in range(1,n):

if arr[i]>arr[i-1]:

up[i]=down[i-1]+1

elif arr[i]int:

n=len(arr)

l=r=0

res=1

while rarr[r-1] and arr[r]>arr[r+1]) or (arr[r]r+=1

else:

l=rres=max(res,r-l+1)

return res

978 最長湍流子陣列

求最值問題,不用輸出具體的結果,只需要輸出長度,那麼就可以使用動態規劃,確定了方法,就可以根據方法的模板來寫。首先確定狀態,這裡的dp陣列為2行n列 dp 0 j 表示以第j個數字為結尾的,且當前為公升序列,也就是第j個數大於第j 1個數。dp 1 j 表示以第j個數字為結尾的,且當前為降序列,也就...

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 最長湍流子陣列

當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 本題最容易...