摆动序列

题目链接

  • 贪心
    尽可能多的选择波峰波谷。
class Solution {public:int wiggleMaxLength(vector<int>& nums) {int n = nums.size();if (n < 2) {return n;}int pre = nums[1] - nums[0];int ret = pre == 0 ? 1 : 2;for (int i = 2; i < n; ++i) {int diff = nums[i] - nums[i-1];if ((diff > 0 && pre <= 0) || (diff < 0 && pre >= 0)) {pre = diff;++ret;}}return ret;}
};
  • 动态规划
    up[ i ] = 前i个元素最长的上升摆动序列(结尾为上升)
    down[ i ] = 前i个元素最长的下降摆动序列(结尾为下降)

class Solution {public:int wiggleMaxLength(vector<int>& nums) {int n = nums.size();if (n < 2) {return n;}vector<int> up(n, 0), down(n, 0);up[0] = down[0] = 1;for (int i = 1; i < n; ++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(down[i-1], up[i-1] + 1);}else {up[i] = up[i-1];down[i] = down[i-1];}}return max(up[n-1], down[n-1]);}
};
class Solution {public:int wiggleMaxLength(vector<int>& nums) {int n = nums.size();if (n < 2) {return n;}int up = 1, down = 1;for (int i = 1; i < n; ++i) {if (nums[i] > nums[i-1]) {up = max(up, down + 1);}else if (nums[i] < nums[i-1]){down = max(down, up + 1);}}return max(up, down);}
};

贪心/动态规划 - 摆动序列相关推荐

  1. 贪心---leetcode-376摆动序列

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

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

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

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

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

  4. 贪心法——LeetCode376 摆动序列

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

  5. 贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和

    贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和 一.455.分发饼干 题目连接:455. 分发饼干 - 力扣(LeetCode) 思路1:用贪心思想,将饼干数组和胃口数组先排序,然后 ...

  6. [蓝桥杯][算法训练VIP]摆动序列(深搜+回溯||动态规划)

    题目描述 如果一个序列满足下面的性质,我们就将它称为摆动序列: 序列中的所有数都是不大于k的正整数: 序列中至少有两个数. 序列中的数两两不相等: 如果第i – 1个数比第i – 2个数大,则第i个数 ...

  7. 算法----摆动序列

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

  8. 序列复杂度怎么看_每日算法系列【LeetCode 376】摆动序列

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

  9. 找出最具竞争力的子序列_每日算法系列【LeetCode 376】摆动序列

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

最新文章

  1. 央视深入报道,国内主流芯片真实水平如何?
  2. 我们部署个额外域控制器
  3. jq修改iframe html代码,使用jQuery替换iframe的所有内容(包括doctype和html标签)
  4. CentOS6.9编译安装LNMP环境
  5. 华为荣耀七能升级鸿蒙系统吗,华为鸿蒙系统来了,你知道哪些华为手机荣耀手机可以升级吗?...
  6. 两个Android选择文件对话框
  7. Java数值溢出问题以及简单的算法实例
  8. 英语影响计算机专业,英语不好对于学习计算机编程来说到底有没有影响?
  9. MSDN中文版 - MSDN中文版 - 微软官方MSDN原版资源下载平台
  10. 如何将Excel工作表另存为PDF
  11. 如何用PS把背景完全扣掉,变成透明
  12. DS18B20温度传感器-51单片机控制程序
  13. docker-Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runn
  14. 01 JavaScript的前世今生
  15. 如何避免过敏,哮喘和湿疹断奶宝宝正确
  16. wireshark流量分析--巧观察
  17. python随机生成二维列表_对python产生随机的二维数组实例详解
  18. 1. Linux命令之ps:查看进程状态
  19. 思科模拟器:ethernet channel---以太网通道
  20. python元素分类_在python中对列表的元素进行分类

热门文章

  1. 使用@Configuration注解来代替Spring的bean配置
  2. Jquery EasyUI datagrid数据库分页
  3. 工厂模式——JavaScript
  4. Windows 下OpenSSL 安装详解 +图解
  5. 解决Flex/Flash跨域访问出现的安全沙箱问题
  6. (求助)即时发送异常给开发人员
  7. 计算机清灰后无法联网,修台电脑比窦娥还冤,清灰后电脑不开机,客户:刚刚还是好好的!...
  8. 【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识
  9. MFC 基础知识:对话框背景添加图片和按钮Button添加图片
  10. 【数据结构与算法】之深入解析“二叉树的后序遍历”的求解思路与算法示例