diff options
Diffstat (limited to 'wiggle_subsequence.cpp')
-rw-r--r-- | wiggle_subsequence.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/wiggle_subsequence.cpp b/wiggle_subsequence.cpp new file mode 100644 index 0000000..22376d4 --- /dev/null +++ b/wiggle_subsequence.cpp @@ -0,0 +1,23 @@ +#include "leetcode.h" + +class Solution { +public: + int wiggleMaxLength(vector<int> &nums) { + int ans = 1, i = 1; + while (i < nums.size() && nums[i] == nums[i - 1]) + i++; + if (i == nums.size()) + return 1; + bool upper = nums[i - 1] > nums[i]; + for (; i < nums.size(); i++) + if ((upper && nums[i] < nums[i - 1]) || !upper && nums[i] > nums[i - 1]) + upper = !upper, ans++; + return ans; + } +}; + +int main() { + Solution obj; + vector<int> nums = {1, 17, 5, 10, 13, 15, 10, 5, 16, 8}; + cout << obj.wiggleMaxLength(nums); +} |