贪心/动态规划 - 摆动序列
摆动序列
题目链接
- 贪心
尽可能多的选择波峰波谷。
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);}
};
贪心/动态规划 - 摆动序列相关推荐
- 贪心---leetcode-376摆动序列
题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个摆动 ...
- LeetCode 376. 摆动序列(贪心 动态规划)
文章目录 1. 题目 2. 解题 2.1 贪心 2.2 动态规划 1. 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个 ...
- 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划
文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...
- 贪心法——LeetCode376 摆动序列
贪心法 题目:摆动序列 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2 ...
- 贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和
贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和 一.455.分发饼干 题目连接:455. 分发饼干 - 力扣(LeetCode) 思路1:用贪心思想,将饼干数组和胃口数组先排序,然后 ...
- [蓝桥杯][算法训练VIP]摆动序列(深搜+回溯||动态规划)
题目描述 如果一个序列满足下面的性质,我们就将它称为摆动序列: 序列中的所有数都是不大于k的正整数: 序列中至少有两个数. 序列中的数两两不相等: 如果第i – 1个数比第i – 2个数大,则第i个数 ...
- 算法----摆动序列
题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 .第一个差(如果存在的话)可能是正数或负数.仅有一个元素或者含两个不等元素的序列也视作摆动序列. 例如, [1, 7, ...
- 序列复杂度怎么看_每日算法系列【LeetCode 376】摆动序列
题目描述 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个 ...
- 找出最具竞争力的子序列_每日算法系列【LeetCode 376】摆动序列
题目描述 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个 ...
最新文章
- 央视深入报道,国内主流芯片真实水平如何?
- 我们部署个额外域控制器
- jq修改iframe html代码,使用jQuery替换iframe的所有内容(包括doctype和html标签)
- CentOS6.9编译安装LNMP环境
- 华为荣耀七能升级鸿蒙系统吗,华为鸿蒙系统来了,你知道哪些华为手机荣耀手机可以升级吗?...
- 两个Android选择文件对话框
- Java数值溢出问题以及简单的算法实例
- 英语影响计算机专业,英语不好对于学习计算机编程来说到底有没有影响?
- MSDN中文版 - MSDN中文版 - 微软官方MSDN原版资源下载平台
- 如何将Excel工作表另存为PDF
- 如何用PS把背景完全扣掉,变成透明
- DS18B20温度传感器-51单片机控制程序
- docker-Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runn
- 01 JavaScript的前世今生
- 如何避免过敏,哮喘和湿疹断奶宝宝正确
- wireshark流量分析--巧观察
- python随机生成二维列表_对python产生随机的二维数组实例详解
- 1. Linux命令之ps:查看进程状态
- 思科模拟器:ethernet channel---以太网通道
- python元素分类_在python中对列表的元素进行分类
热门文章
- 使用@Configuration注解来代替Spring的bean配置
- Jquery EasyUI datagrid数据库分页
- 工厂模式——JavaScript
- Windows 下OpenSSL 安装详解 +图解
- 解决Flex/Flash跨域访问出现的安全沙箱问题
- (求助)即时发送异常给开发人员
- 计算机清灰后无法联网,修台电脑比窦娥还冤,清灰后电脑不开机,客户:刚刚还是好好的!...
- 【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识
- MFC 基础知识:对话框背景添加图片和按钮Button添加图片
- 【数据结构与算法】之深入解析“二叉树的后序遍历”的求解思路与算法示例