LeetCode 376. 摆动序列(贪心 动态规划)
文章目錄
- 1. 題目
- 2. 解題
- 2.1 貪心
- 2.2 動(dòng)態(tài)規(guī)劃
1. 題目
如果連續(xù)數(shù)字之間的差嚴(yán)格地在正數(shù)和負(fù)數(shù)之間交替,則數(shù)字序列稱為擺動(dòng)序列。第一個(gè)差(如果存在的話)可能是正數(shù)或負(fù)數(shù)。少于兩個(gè)元素的序列也是擺動(dòng)序列。
例如, [1,7,4,9,2,5] 是一個(gè)擺動(dòng)序列,因?yàn)椴钪?(6,-3,5,-7,3) 是正負(fù)交替出現(xiàn)的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是擺動(dòng)序列,第一個(gè)序列是因?yàn)樗那皟蓚€(gè)差值都是正數(shù),第二個(gè)序列是因?yàn)樗淖詈笠粋€(gè)差值為零。
給定一個(gè)整數(shù)序列,返回作為擺動(dòng)序列的最長(zhǎng)子序列的長(zhǎng)度。 通過(guò)從原始序列中刪除一些(也可以不刪除)元素來(lái)獲得子序列,剩下的元素保持其原始順序。
示例 1: 輸入: [1,7,4,9,2,5] 輸出: 6 解釋: 整個(gè)序列均為擺動(dòng)序列。示例 2: 輸入: [1,17,5,10,13,15,10,5,16,8] 輸出: 7 解釋: 這個(gè)序列包含幾個(gè)長(zhǎng)度為 7 擺動(dòng)序列,其中一個(gè)可為[1,17,10,13,10,16,8]。示例 3: 輸入: [1,2,3,4,5,6,7,8,9] 輸出: 2進(jìn)階: 你能否用 O(n) 時(shí)間復(fù)雜度完成此題?來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/wiggle-subsequence
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
類似題目:
LeetCode 280. 擺動(dòng)排序
LeetCode 324. 擺動(dòng)排序 II
2.1 貪心
去除相鄰的相等的數(shù)
考慮 i?1,i,i+1i-1,i,i+1i?1,i,i+1 連續(xù)的三個(gè)數(shù),如果 n[i?1]<n[i]&n[i]>n[i+1]n[i-1]<n[i] \quad \& \quad n[i] >n[i+1]n[i?1]<n[i]&n[i]>n[i+1] 或者
n[i?1]>n[i]&n[i]<n[i+1]n[i-1]>n[i] \quad \& \quad n[i] <n[i+1]n[i?1]>n[i]&n[i]<n[i+1] 則擺動(dòng)序列長(zhǎng)度+1
2.2 動(dòng)態(tài)規(guī)劃
up表示到當(dāng)前數(shù)為止是上升的擺動(dòng)數(shù)列長(zhǎng)度;
down表示到當(dāng)前數(shù)為止是下降的擺動(dòng)數(shù)列長(zhǎng)度;
總結(jié)
以上是生活随笔為你收集整理的LeetCode 376. 摆动序列(贪心 动态规划)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 537. 复数乘法
- 下一篇: LeetCode 1017. 负二进制转