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

例如, [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 摇摆序列相关推荐

  1. Leetcode376摇摆序列--贪心+自动机

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

  2. leetcode-376 摆动序列

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

  3. 贪心:Wiggle Subsequence 摇摆序列

    一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则该序列被称为 摇摆序列.一个小于2个元素的序列直接为摇摆序列.给一个随机序列,求这个序列满足摇摆序列定义的最长子序列的长度: 输入[1,1 ...

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

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

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

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

  6. c++ 摇摆序列 (贪心+状态自动机)

    一个整数序列,如果相邻两个元素差是正负交替,则该序列为摇摆序列, 小于2个元素并且不相等,序列直接是摇摆序列 如 序列[1,7,4,9,2,5] 相邻元素差(6,-3,5,-7,3),是摇摆序列 序列 ...

  7. C++ 贪心算法 摇摆序列

    一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则该序列被称为摇摆序列.一个小于2个元素的序列直接为摇摆序列. #include<vector> class Solution ...

  8. 利用python实现贪心算法-----摇摆序列

    今天看到了这个贪心算法的摇摆序列,确实挺难的,自己就没有按照老师所用到的c语言代码编写,并且用了自己所能够理解的方式进行编写代码,代码实现起来有点多余,但是最终还是实现了,大家可以自己进行优化,这个是 ...

  9. [Leetcode 376]摇摆序列 Wiggle Subsequence

    [题目] A sequence of numbers is called a wiggle sequence if the differences between successive numbers ...

最新文章

  1. Python DB-API 2.0规范
  2. linux系统如何拨号上网连接,教你在Linux下如何使用ADSL拨号上网
  3. PDF阅读器中如何改变线条颜色、线宽和线型等
  4. layer 关闭父页面 刷新
  5. linux启动找不到内核,linux – PXE启动 – 在TFTP服务器上找不到内核
  6. android 列表上拉加载更多,Android 下拉刷新,上拉加载更多控件–支持ListView,GridView和ScrollView...
  7. 程序员求职之道(《程序员面试笔试宝典》)之求职的时候该不该只看钱?
  8. 51单片机入门——DS18B20
  9. Spring Boot 整合 AWS S3协议 OSS功能 支持 七牛、阿里、Minio等一切支持S3协议的云厂商
  10. Java 8 Nashorn 教程
  11. java贪吃蛇保存,Java 实现贪吃蛇游戏的示例
  12. 区块链公司BitFury与联合国合作开展哈萨克斯坦的森林项目
  13. pyCharm最新2018激活码
  14. bt torrent文件
  15. word 对文中的图表进行链接、插入题注。
  16. Windows实现快捷键熄屏功能
  17. 使用sklearn划分训练集、验证集、测试集
  18. 计算机科学导论考试A卷试题,计算机科学导论试题a1.doc
  19. 资产负债表的阅读与分析
  20. 【鼠标移动到上面自动显示提示信息文字】

热门文章

  1. 你知道Verilog HDL程序是如何构成的吗
  2. 【salesforce】aura子组件怎么向父组件传递消息
  3. windows 8 安装老版本quickbooks问题解决
  4. 美光科技:2019财年的营收和净利润狂泻不止
  5. Java中实现原子操作
  6. 收集的C#Directx资料
  7. vue +高德地图 绘制围栏
  8. Arduino门禁控制
  9. Invitation Cards POJ - 1511【最短路】
  10. 据统计:程序员平均寿命仅为37.9岁!