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

#include<vector>
class Solution
{public:Solution(){}~Solution(){}int wiggleMaxLength(std::vector<int>& nums){if (nums.size()<2){return nums.size();}static const int BEGIN = 0;static const int UP = 1;static const int DOWN = 2;int STATE = BEGIN;int max_length = 1;for (unsigned int i = 1; i < nums.size(); i++){switch (STATE){case BEGIN:if (nums[i-1]<nums[i]){STATE = UP;max_length++;}else if (nums[i-1]>nums[i]){STATE = DOWN;max_length++;}break;case UP:if (nums[i - 1] > nums[i]){STATE = DOWN;max_length++;}break;case DOWN:if (nums[i-1]<nums[i]){STATE = UP;max_length++;}break;}}return max_length;}
};
int main()
{std::vector<int> nums;nums.push_back(1);nums.push_back(17);nums.push_back(5);nums.push_back(10);nums.push_back(13);nums.push_back(15);nums.push_back(10);nums.push_back(15);nums.push_back(16);nums.push_back(8);Solution solve;printf("%d\n", solve.wiggleMaxLength(nums));return 0;
}

运行结果:
7

C++ 贪心算法 摇摆序列相关推荐

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

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

  2. 贪心:Wiggle Subsequence 摇摆序列

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

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

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

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

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

  5. 贪心算法求解一个序列中出现次数最多的元素问题

    贪心算法求解一个序列中出现次数最多的元素问题 题目: 指定n个正整数,编写一个实验程序找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入描述:输入的第1行只有一个正整数n(1 ...

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

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

  7. 贪心算法的python实现

    贪心算法 贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略 ...

  8. LeetCode376 摇摆序列

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

  9. 部分背包的贪婪算法 java_使用JAVA实现算法——贪心算法解决背包问题

    packageBasePart;importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.IOException ...

最新文章

  1. 《将要淘汰的八种人》读后感
  2. git的一些常用命令
  3. D3.js(v3)+react 制作 一个带坐标与比例尺的散点图 (V3版本)
  4. JSONP的诞生、原理及应用实例
  5. 中世纪判断女巫的方法总结
  6. 加密托管机构Komainu与英国当局合作存储没收的加密货币
  7. L1-033__040
  8. 想问一下系统数据库工程师自学能过吗?
  9. ipsan设备挂载及模仿iscsi服务端进行挂载
  10. 微信小程序项目实例——投骰子
  11. 24种设计模式-单例模式-懒汉模式详解
  12. Python穷举法连接WiFi
  13. 手把手教你Markdown语法
  14. python import失败_解决python有时候import不了当前的包问题
  15. 计算机文档打不开是什么原因,文档打不开电脑我的文档Word突然打不开了,是怎会是啊?其他还都 爱问知识人...
  16. Wifi4更换Wifi6路由器的使用体验
  17. TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具
  18. 【CTSC2016】时空旅行
  19. C# CSV文件读写
  20. 为什么精英这么用脑不会累

热门文章

  1. 学习豆瓣电台总结(一)
  2. 软件开发测试男友花束,心理测试:4款花束,你最喜欢哪款?测出你最近最需要什么...
  3. UE4 3ds Max 模型多维子材质
  4. php实现通讯录按字母分组,通讯录首字母检索功能实现
  5. 《反恐特警组》(S.W.A.T.)影片介绍
  6. 三国群英传霸业之王服务器维护,《三国群英传:霸王之业》1月7日维护更新公告...
  7. 视频眼镜中微显示器技术:LCD、LCoS、OLED和MEMS
  8. 基于java的学生宿舍公寓管理系统
  9. 计算机网口百兆改千兆,家里是千兆网,但是网口是百兆怎么办?
  10. LTE FDD PSS/SSS/MIB时频资源位置