aboutsummaryrefslogtreecommitdiff
path: root/wiggle_subsequence.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'wiggle_subsequence.cpp')
-rw-r--r--wiggle_subsequence.cpp23
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);
+}