[解题报告]376. Wiggle Subsequence
来源:互联网 发布:js改变color rgb 编辑:程序博客网 时间:2024/06/07 23:52
Problem Background:
A sequence of numbers is called a wiggle sequence if the differences between successive numbers strictly alternate between positive and negative. The first difference (if one exists) may be either positive or negative. A sequence with fewer than two elements is trivially a wiggle sequence.
For example, [1,7,4,9,2,5]
is a wiggle sequence because the differences (6,-3,5,-7,3) are alternately positive and negative. In contrast,[1,4,7,2,5]
and [1,7,4,5,5]
are not wiggle sequences, the first because its first two differences are positive and the second because its last difference is zero.
Given a sequence of integers, return the length of the longest subsequence that is a wiggle sequence. A subsequence is obtained by deleting some number of elements (eventually, also zero) from the original sequence, leaving the remaining elements in their original order.
Examples:
Input: [1,7,4,9,2,5]Output: 6The entire sequence is a wiggle sequence.Input: [1,17,5,10,13,15,10,5,16,8]Output: 7There are several subsequences that achieve this length. One is [1,17,10,13,10,16,8].Input: [1,2,3,4,5,6,7,8,9]Output: 2
Follow up:
Can you do it in O(n) time?
Credits:
Special thanks to @agave and @StefanPochmann for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
class Solution {public: int wiggleMaxLength(vector<int>& nums) { int length = nums.size(); if (length < 1) { return 0; } else if (length == 1) { return 1; } else { int max = 1; int lastNum = nums[0]; bool isPositive = nums[1] > nums[0] ? true : false; for (int i = 1; i < length; ++i, isPositive = !isPositive) { if (isPositive) { if (nums[i] > lastNum) { ++max; } else { isPositive = false; } } else { if (nums[i] < lastNum) { ++max; } else { isPositive = true; } }lastNum = nums[i]; } return max; } }};
- [解题报告]376. Wiggle Subsequence
- Wiggle Subsequence解题报告
- [leetcode] 376. Wiggle Subsequence 解题报告
- leetcode 376. Wiggle Subsequence 解题报告
- [Leetcode] 376. Wiggle Subsequence 解题报告
- Leetcode 376. Wiggle Subsequence 解题报告
- Leetcode 376. Wiggle Subsequence 摇摆序列 解题报告
- leetcode 376. Wiggle Subsequence
- 376. Wiggle Subsequence
- leetcode 376. Wiggle Subsequence
- 376. Wiggle Subsequence
- [leetcode] 376. Wiggle Subsequence
- [LEETCODE] 376. Wiggle Subsequence
- [leetcode] 376. Wiggle Subsequence
- [leetcode] 376. Wiggle Subsequence
- LeetCode 376. Wiggle Subsequence
- leetcode 376. Wiggle Subsequence
- 376.[LeetCode]Wiggle Subsequence
- apache-tomcat-9安装
- 日历问题
- mysql 忘记root密码后 ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
- c语言:奇偶个数
- 进程间通信详解 - 剪贴板实现
- [解题报告]376. Wiggle Subsequence
- 字符串匹配问题
- uber使用的一些体验
- [LightOJ 1342] Aladdin and the Magical Sticks (期望的线性性质+几何分布+邮票收集问题)
- 网络工程1.7——七层模型之二数据链路层
- 题目1015:还是A+B
- 进程间通信详解 - 命名管道实现
- android studio 计算器代码 不能连续运算
- 后缀数组入门——初步理解及模板