本文主要是介绍376. Wiggle Subsequence dp+贪心,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http://blog.csdn.net/qq508618087/article/details/51991068
贪心算法:
最大是len
从前往后,每有一位不符合条件则 res--
不符条件的情况就是连续加或者连续减 如果出现这种情况那么在连续加的最后一位一定是最大值,连续减的最后一位一定是最小值 这样一定会保证有最好的情况
public class Solution {public int wiggleMaxLength(int[] nums) {if(nums.length<2) return nums.length;int len=nums.length;int res=len;int flag=0;for(int i=1;i<len;i++){if(nums[i]==nums[i-1]) res--;else if(nums[i]>nums[i-1]) {if(flag==1) res--;else flag=1;}// flag==1? res--:flag=1;else if(nums[i]<nums[i-1]){if(flag==-1) res--;else flag=-1;}// flag==-1? res--:flag=-1;}return res;}
}
这篇关于376. Wiggle Subsequence dp+贪心的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!