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