如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。

例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。

相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。
子序列 可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。

给你一个整数数组 nums ,返回 nums 中作为 摆动序列 的 最长子序列的长度 。

示例 1:

输入:nums = [1,7,4,9,2,5]
输出:6
解释:整个序列均为摆动序列,各元素之间的差值为 (6, -3, 5, -7, 3) 。

示例 2:

输入:nums = [1,17,5,10,13,15,10,5,16,8]
输出:7
解释:这个序列包含几个长度为 7 摆动序列。
其中一个是 [1, 17, 10, 13, 10, 16, 8] ,各元素之间的差值为 (16, -7, 3, -3, 6, -8) 。

示例 3:

输入:nums = [1,2,3,4,5,6,7,8,9]
输出:2

提示:

1 <= nums.length <= 1000
0 <= nums[i] <= 1000

进阶:

你能否用 O(n) 时间复杂度完成此题?

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/wiggle-subsequence

方法一:贪心

C++提交内容:

class Solution {public:int wiggleMaxLength(vector<int>& nums) {int n = nums.size();if (n < 2) {return n;}int prevdiff = nums[1] - nums[0];int ret = prevdiff != 0 ? 2 : 1;for (int i = 2; i < n; i++) {int diff = nums[i] - nums[i - 1];if ((diff > 0 && prevdiff <= 0) || (diff < 0 && prevdiff >= 0)) {ret++;prevdiff = diff;}}return ret;}
};

力扣(LeetCode)376. 摆动序列(2023.01.09)相关推荐

  1. leetcode - 376. 摆动序列

    376. 摆动序列 -------------------------------------------- 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在 ...

  2. LeetCode 376. 摆动序列 中等难度

    376. 摆动序列 题目: 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如: [1,7,4,9 ...

  3. LeetCode 376. 摆动序列(贪心 动态规划)

    文章目录 1. 题目 2. 解题 2.1 贪心 2.2 动态规划 1. 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个 ...

  4. leetcode 376. 摆动序列 思考分析

    目录 题目 思路分析 代码 总结 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1 ...

  5. leetcode 376. 摆动序列(dp)

    如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个摆动序列, ...

  6. [leetcode]376. 摆动序列

    原文:https://leetcode-cn.com/problems/wiggle-subsequence/solution/bai-dong-xu-lie-by-leetcode/ 给定一个整数序 ...

  7. Leetcode 376. 摆动序列 解题思路及C++实现

    解题思路: 使用贪心算法的思想. 在例子 [1,17,5,10,13,15,10,5,16,8]中,[1, 17].[17, 5]这前面的两个序列就直接都选择了,没有问题,对于后面[5, 10, 13 ...

  8. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

  9. 【LeetCode】376. 摆动序列(图解)

    376. 摆动序列 一.问题 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4, ...

  10. 【LeetCode每日一题】——376.摆动序列

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[题目进阶] 九[时间频度] 十[代码实现] 十一[提交结果] 一[题目类别 ...

最新文章

  1. 【PAT】1007. 素数对猜想 (20)
  2. lLinux 下 Stress 压力测试工具
  3. docker 部署springboot容器日志处理
  4. 【PHP】伪静态 - 1. 使用正则表达式实现
  5. 刷新table数据_关于数据透视表的刷新功能最值得了解的几个操作
  6. 基于dde-top-panel+tint2+plank+conky的Deepin(深度)桌面美化
  7. ceb怎么转换成word_win8.1系统将ceb文件格式转换成word的方法
  8. Android文字图像识别并翻译的简单实现
  9. VS2022编译librtmp制作rtmp.lib用于安装windows版本的python-librtmp 0.3.0
  10. 用userAgent判断手机类型
  11. 断言(C++大师Andrei Alexandrescu的文章)
  12. Android内存泄漏总结,成功拿下大厂offer
  13. Python自动抢红包,从此再也不会错过微信红包了!
  14. 电脑删除文件找不到该项目怎么解决
  15. JavaWeb-云日志
  16. AESECB加密算法 C 语言代码实现
  17. 单点登录 ( 踢人模式 )
  18. 让 Windows XP 不用输入密码自动登录
  19. turtle的函数及使用
  20. html 醒目的样式,创意醒目门牌设计欣赏

热门文章

  1. 如何使用ChatGPT辅助AI绘画?
  2. mac下连接夜神模拟器
  3. html导出 word文档教程
  4. N4,NVP6324,NVP6124I,NVP6158C,四路RX区别
  5. Chemex资产管理运维平台 v3.0.8
  6. 利用flask解析海康摄像头视频
  7. 记录一下新写的软件框架(Clover)
  8. 【中国科学院大学】考研初试复试资料分享
  9. 安装lightgbm报错Filelt ornoiEtnw Cuild nt find moble ‘Try usi ng the fil. pth with constowctor synta.
  10. 上例题!!!计算机网络之奇奇怪怪的IP练习题,含IP寻址、IP组网练习!!!!!