解题思路:

使用贪心算法的思想。

在例子 [1,17,5,10,13,15,10,5,16,8]中,[1, 17]、[17, 5]这前面的两个序列就直接都选择了,没有问题,对于后面[5, 10, 13, 15]这样的子序列,数值连续增大,则利用贪心的思想选取差值最大的两个数,即[5, 15],删除(不选)数字10和13,再往后的序列[15, 10, 5],同理,选择[15, 5],这样一次遍历下来,贪心策略得到的子序列就是最优解对应的一个序列。

下面程序中的大循环是遍历nums容器(数组)。每一次执行循环体,都进行一次比较操作,然后再看看上一次的差值是否是相反的,如果是相反的,就将结果加1,并设置flag的值。

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {if(nums.empty()) return 0;int res = 1;int i = 0;int flag = 0; //用于标记前一个差值的正负while(i < nums.size() - 1){if(nums[i] < nums[i + 1]){  //当前差值为正if(flag != 1){     //前一差值不为正,则res加1,且flag置为1,表示差值为正res++;flag = 1;}}else if(nums[i] > nums[i + 1]){  //当前差值为负if(flag != -1){   //前一差值不为负,则res加1,且flag置为-1,表示差值为负res++;flag = -1;}}i++;   //指向下一个元素,包括nums[i] == nums[i + 1]的情况}return res;}
};

Leetcode 376. 摆动序列 解题思路及C++实现相关推荐

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

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

  2. leetcode - 376. 摆动序列

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

  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. 摆动序列(图解)

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

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

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

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

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

最新文章

  1. php帝国系统调出图片内空,帝国CMS图集字段的大图,小图,说明的调用方法
  2. 《Python知识手册》,V3.0版来了,2021年,走起!
  3. 将C/C++程序的变量数据导入到MATLAB中的方法
  4. CheckStyle
  5. java 解密 php_使用JAVA解密PHP解密
  6. 自适应宽度元素单行文本省略用法探究
  7. winCE下Unicode编码
  8. 【u009】瑞瑞的木板
  9. SRAM6264(8K*8)
  10. python将图片转换成二进制文本逻辑_将python图片转为二进制文本的实例
  11. 【Linux】Linux安装搜狗输入法
  12. 基于tensorflow的RNN中文自动写诗程序
  13. DGPS和RTK的区别
  14. 第94页的gtk+编程例子——正文构件
  15. android 获取alertdialog的view,Android开发实现AlertDialog中View的控件设置监听功能分析...
  16. 编写函数(fun),通过函数调用,输入存款金额和存款年限,计算到期总金额和利息。
  17. 虚拟机安装报错-启动失败-Intel VT-x 处于禁用状态
  18. 有关FLOPS的定义与计算
  19. java 存储空间 简单分析
  20. 三层交换机 原理解析

热门文章

  1. sqlyog怎么连接mysql_Mysql数据库连接过高,怎么快速杀掉连接
  2. win7_iis报500.19和500.21错误问题解决
  3. ThinkPHP模板之二
  4. adb 相关问题总结
  5. UVA 1646 Edge Case
  6. LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
  7. BZOJ 2244: [SDOI2011]拦截导弹 DP+CDQ分治
  8. java9-6 内部类
  9. JAVA中File类的使用
  10. XMLHttpRepuest2