/**
* 978. 最長湍流子陣列
* @author wsq
* @date 2020/10/20
當 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
*/package com.wsq.dp;
public
class
maxturbulencesize
int[
] f =
newint
[n];
f[0]
=1;if
(a[1
]!= a[0]
)else
int max = f[1]
;for
(int i =
2; i < n; i++
)else
if(a[i]
!= a[i-1]
)else
if(f[i]
> max)
}return max;
}}
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 也就是說,如果比較符號在...
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 ...