本文主要是介绍刷代码随想录有感(82):贪心算法——摆动序列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题干:
代码:
class Solution {
public:int wiggleMaxLength(vector<int>& nums) {if(nums.size() <= 1)return nums.size();int prediff = 0;int curdiff = 0;int res = 1;for(int i = 0; i < nums.size() - 1; i++){curdiff = nums[i + 1] - nums[i];if((prediff >= 0 && curdiff < 0) || (prediff <= 0 && curdiff > 0)){res++;prediff = curdiff;}}return res;}
};
规定开头就算一个坡,故res初始值为1.
摆动坡情况:
①上下坡
②上下坡加平坡
③首尾:算两个坡
④单调坡加平坡:只有两个
prediff只需要在出现摆动时变更就行了(为了防止单调破加平坡情况在“拐点”处多算一次)。
这篇关于刷代码随想录有感(82):贪心算法——摆动序列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!