LeetCode 376. 擺動序列
題目
如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第一個差(如果存在的話)可能是正數或負數。少於兩個元素的序列也是擺動序列。
例如, [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) 時間複雜度完成此題?
題解
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size()<2) return nums.size();
int up[1005]={0},down[1005]={0};
for(int i=1;i<nums.size();i++){
if(nums[i]>nums[i-1]){
up[i]=max(up[i-1],down[i-1]+1);
down[i]=down[i-1];
}else if(nums[i]<nums[i-1]){
up[i]=up[i-1];
down[i]=max(up[i-1]+1,down[i-1]);
}else{
up[i]=up[i-1];
down[i]=down[i-1];
}
}
return max(up[nums.size()-1],down[nums.size()-1])+1;
}
};
相關文章
- 力扣-376. 擺動序列力扣
- LeetCode C++ 376. Wiggle Subsequence【Dynamic Programming】中等LeetCodeC++
- 程式碼隨想錄演算法訓練營第三十一天 | 455.分發餅乾 376.擺動序列 53.最大子陣列和演算法陣列
- 程式碼隨想錄演算法訓練營第31天 | 貪心演算法 455.分發餅乾 、376. 擺動序列、53. 最大子序和演算法
- 程式碼隨想錄day27 || 455 分餅乾,376 擺動序列,53 最大子序列和
- Leetcode 最小調整數+滑動視窗遞增子序列LeetCode
- canvas小球擺動效果Canvas
- leetcode 152 乘積最大子序列LeetCode
- Leetcode-115. 不同的子序列LeetCode
- Leetcode 山字形序列_正反掃描LeetCode
- LeetCode-392-判斷子序列LeetCode
- [LeetCode解題] -- 動態規劃二 [ 子串、子序列問題 ]LeetCode動態規劃
- [leetcode 中等 動態規劃]673. 最長遞增子序列的個數 [leetcode 簡單 滑動視窗] 674. 最長連續遞增序列 [筆試]陣列的遞增子陣列序列LeetCode動態規劃筆試陣列
- Leetcode-300. 最長遞增子序列LeetCode
- LeetCode300.最長遞增子序列LeetCode
- LeetCode-187-重複的DNA序列LeetCode
- LeetCode-128-最長連續序列LeetCode
- LeetCode 1143.最長公共子序列LeetCode
- 動態規劃 擺花 題解動態規劃
- LeetCode516. 最長迴文子序列LeetCode
- 【LeetCode動態規劃#14】子序列系列題(最長遞增子序列、最長連續遞增序列、最長重複子陣列、最長公共子序列)LeetCode動態規劃陣列
- Leetcode 題解系列 -- 和為s的連續正數序列(滑動視窗)LeetCode
- leetcode力扣 300. 最長遞增子序列LeetCode力扣
- Leetcode 300 最長遞增子序列(LIS板題)LeetCode
- 【修訂版】Leetcode 300 最長遞增子序列LeetCode
- LeetCode 300. 最長上升子序列(Python、動態規劃、貪心演算法)LeetCodePython動態規劃演算法
- LeetCode 1626. 無矛盾的最佳球隊---【動態規劃】最長上升子序列變換版-->最大上升子序列和LeetCode動態規劃
- 【LeetCode刷題(中等程度)】946. 驗證棧序列LeetCode
- LeetCode 297. Serialize and Deserialize Binary Tree 二叉樹序列化反序列化LeetCode二叉樹
- 【LeetCode(Java) - 298】二叉樹最長連續序列LeetCodeJava二叉樹
- 【leetcode】53. Maximum Subarray 連續子序列的最大和LeetCode
- 線性dp:LeetCode516 .最長迴文子序列LeetCode
- 當自動駕駛還未擺脫人類自動駕駛
- 從0打卡leetcode之day 3 -- 最大子序列和LeetCode
- LeetCode演算法系列_0891_子序列寬度之和LeetCode演算法
- 線性dp:LeetCode674. 最長連續遞增序列LeetCode
- 【譯】自動生成整型序列
- 雙序列動態規劃動態規劃