LeetCode376 摇摆序列
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。
例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。
给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一些(也可以不删除)元素来获得子序列,剩下的元素保持其原始顺序。
示例 1:
输入: [1,7,4,9,2,5]
输出: 6
解释: 整个序列均为摆动序列。
示例 2:
输入: [1,17,5,10,13,15,10,5,16,8]
输出: 7
解释: 这个序列包含几个长度为 7 摆动序列,其中一个可为[1,17,10,13,10,16,8]。
示例 3:
输入: [1,2,3,4,5,6,7,8,9]
输出: 2
思路:题目要求求最大摇摆序列,可以使用贪心算法结合状态机实现。
class Solution {
public:int wiggleMaxLength(vector<int>& nums) {if(nums.size()==0){return 0;}static const int BEGIN=0;static const int UP=1;static const int DOWN=2;int STATIC=BEGIN;int MAX_LENGRH=1;for(int i=1;i<nums.size();i++){switch(STATIC){case BEGIN:if(nums[i-1]<nums[i]){STATIC=UP;MAX_LENGRH++;}else if(nums[i-1]>nums[i]){STATIC=DOWN;MAX_LENGRH++;}break;case UP:if(nums[i-1]>nums[i]){STATIC=DOWN;MAX_LENGRH++;}break;case DOWN:if(nums[i-1]<nums[i]){STATIC=UP;MAX_LENGRH++;}break;} }return MAX_LENGRH;}
};
LeetCode376 摇摆序列相关推荐
- Leetcode376摇摆序列--贪心+自动机
题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个摆动 ...
- leetcode-376 摆动序列
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个摆动序列, ...
- 贪心:Wiggle Subsequence 摇摆序列
一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则该序列被称为 摇摆序列.一个小于2个元素的序列直接为摇摆序列.给一个随机序列,求这个序列满足摇摆序列定义的最长子序列的长度: 输入[1,1 ...
- 贪心---leetcode-376摆动序列
题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个摆动 ...
- 贪心法——LeetCode376 摆动序列
贪心法 题目:摆动序列 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2 ...
- c++ 摇摆序列 (贪心+状态自动机)
一个整数序列,如果相邻两个元素差是正负交替,则该序列为摇摆序列, 小于2个元素并且不相等,序列直接是摇摆序列 如 序列[1,7,4,9,2,5] 相邻元素差(6,-3,5,-7,3),是摇摆序列 序列 ...
- C++ 贪心算法 摇摆序列
一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则该序列被称为摇摆序列.一个小于2个元素的序列直接为摇摆序列. #include<vector> class Solution ...
- 利用python实现贪心算法-----摇摆序列
今天看到了这个贪心算法的摇摆序列,确实挺难的,自己就没有按照老师所用到的c语言代码编写,并且用了自己所能够理解的方式进行编写代码,代码实现起来有点多余,但是最终还是实现了,大家可以自己进行优化,这个是 ...
- [Leetcode 376]摇摆序列 Wiggle Subsequence
[题目] A sequence of numbers is called a wiggle sequence if the differences between successive numbers ...
最新文章
- Python DB-API 2.0规范
- linux系统如何拨号上网连接,教你在Linux下如何使用ADSL拨号上网
- PDF阅读器中如何改变线条颜色、线宽和线型等
- layer 关闭父页面 刷新
- linux启动找不到内核,linux – PXE启动 – 在TFTP服务器上找不到内核
- android 列表上拉加载更多,Android 下拉刷新,上拉加载更多控件–支持ListView,GridView和ScrollView...
- 程序员求职之道(《程序员面试笔试宝典》)之求职的时候该不该只看钱?
- 51单片机入门——DS18B20
- Spring Boot 整合 AWS S3协议 OSS功能 支持 七牛、阿里、Minio等一切支持S3协议的云厂商
- Java 8 Nashorn 教程
- java贪吃蛇保存,Java 实现贪吃蛇游戏的示例
- 区块链公司BitFury与联合国合作开展哈萨克斯坦的森林项目
- pyCharm最新2018激活码
- bt torrent文件
- word 对文中的图表进行链接、插入题注。
- Windows实现快捷键熄屏功能
- 使用sklearn划分训练集、验证集、测试集
- 计算机科学导论考试A卷试题,计算机科学导论试题a1.doc
- 资产负债表的阅读与分析
- 【鼠标移动到上面自动显示提示信息文字】