978 最長湍流子陣列

2022-05-13 06:47:21 字數 1902 閱讀 5817

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

示例 2:

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

輸出:2

示例 3:

輸入:[100]

輸出:1

1 <= a.length <= 400000 <= a[i] <= 10^9滑動視窗切入

tle 88/89

class

solution:

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

n=len(arr)

if n==1:return 1maxlen=0

for i in

range(n):

curlen=0

for j in

range(i,n):

if curlen==0:

curlen+=1

elif curlen==1:

if arr[j-1]!=arr[j]:

curlen+=1

else

:

if arr[j-1]==arr[j]:

break

if arr[j-2]>arr[j-1] and arr[j-1]

curlen+=1

elif arr[j-2]and arr[j-1]>arr[j]:

curlen+=1

else

:

break

maxlen=max(maxlen,curlen)

return maxlen

運用動歸+降維 思想

二重迴圈降為一重迴圈

引入flag作為》,《的標記

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

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