2021 2 8 最長湍流子陣列

2022-07-06 18:03:13 字數 1338 閱讀 8423

當 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

1 <= a.length <= 40000

0 <= a[i] <= 10^9

特別好做的,列舉情況就可以get,也可以是用dp

但是個人覺得滑動視窗更好一點(好理解)

class

solution:

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

ifnot

arr:

return

0 n=len(arr)

up,down=1,1result=1

for i in range(1,n):

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

up=down+1down=1

elif arr[i]]:

down=up+1up=1

else

: down=up=1

result=max(up,down,result)

return result

最長湍流子陣列

當 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 也就是說,如果比較符號在...

978 最長湍流子陣列

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

978 最長湍流子陣列

當 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 也就是說,如果比較符號在...