Leetcode 376. 摆动序列 解题思路及C++实现
解题思路:
使用贪心算法的思想。
在例子 [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++实现相关推荐
- LeetCode 376. 摆动序列 中等难度
376. 摆动序列 题目: 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如: [1,7,4,9 ...
- leetcode - 376. 摆动序列
376. 摆动序列 -------------------------------------------- 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在 ...
- LeetCode 376. 摆动序列(贪心 动态规划)
文章目录 1. 题目 2. 解题 2.1 贪心 2.2 动态规划 1. 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个 ...
- leetcode 376. 摆动序列 思考分析
目录 题目 思路分析 代码 总结 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1 ...
- leetcode 376. 摆动序列(dp)
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个摆动序列, ...
- [leetcode]376. 摆动序列
原文:https://leetcode-cn.com/problems/wiggle-subsequence/solution/bai-dong-xu-lie-by-leetcode/ 给定一个整数序 ...
- 【LeetCode】376. 摆动序列(图解)
376. 摆动序列 一.问题 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4, ...
- 【LeetCode每日一题】——376.摆动序列
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[题目进阶] 九[时间频度] 十[代码实现] 十一[提交结果] 一[题目类别 ...
- 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划
文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...
最新文章
- php帝国系统调出图片内空,帝国CMS图集字段的大图,小图,说明的调用方法
- 《Python知识手册》,V3.0版来了,2021年,走起!
- 将C/C++程序的变量数据导入到MATLAB中的方法
- CheckStyle
- java 解密 php_使用JAVA解密PHP解密
- 自适应宽度元素单行文本省略用法探究
- winCE下Unicode编码
- 【u009】瑞瑞的木板
- SRAM6264(8K*8)
- python将图片转换成二进制文本逻辑_将python图片转为二进制文本的实例
- 【Linux】Linux安装搜狗输入法
- 基于tensorflow的RNN中文自动写诗程序
- DGPS和RTK的区别
- 第94页的gtk+编程例子——正文构件
- android 获取alertdialog的view,Android开发实现AlertDialog中View的控件设置监听功能分析...
- 编写函数(fun),通过函数调用,输入存款金额和存款年限,计算到期总金额和利息。
- 虚拟机安装报错-启动失败-Intel VT-x 处于禁用状态
- 有关FLOPS的定义与计算
- java 存储空间 简单分析
- 三层交换机 原理解析