一:解题思路
使用贪心策略去解决这道题目。
Time:O(n),Space:O(1)
二:完整代码示例 (C++版和Java版)
C++:
class Solution { public: int wiggleMaxLength(vector<int>& nums) { if (nums.size() == 0) return 0; int i = 1; int len = 1; int n = nums.size(); while (i < n && nums[i] == nums[i - 1]) i++; while (i < n) { if (nums[i] > nums[i - 1]) len++; while (i < n && nums[i]>=nums[i - 1]) i++; if (i < n) len++; while (i < n && nums[i] <= nums[i - 1]) i++; } return len; } };
Java:
class Solution { public int wiggleMaxLength(int[] nums) { if(nums==null || nums.length==0) return 0; int i=1; int len=1; int n=nums.length; while(i<n && nums[i]==nums[i-1]) i++; while(i<n) { if(nums[i]>nums[i-1]) len++; while(i<n && nums[i]>=nums[i-1]) i++; if(i<n) len++; while (i<n && nums[i]<=nums[i-1]) i++; } return len; } }
原文:https://www.cnblogs.com/repinkply/p/12893907.html