贪心:
局部最优能推出全局最优+举不出反例 就可以用贪心
分发饼干
这里的报错是因为越界访问 if里还需要增加&&index>=0
又错了!这是因为遍历的内外层设置错误了
摆动序列
摆动序列的意思就是这个数组不能出现递增或者递减 三个数中间的数必须为峰值
设置两个条件值,prediff(nums[i] - nums[i-1]) 和 curdiff(nums[i+1] - nums[i])
处理平坡
本应是(prediff<0&&curdiff>0)+(prediff>0&&curdiff<0)平坡可能出现删除后(prediff=0&&curdiff<0或者prediff=0&&curdiff>0的情况)
处理两个元素的情况
默认最右侧有一个最大值
处理单调上升+平坡情况
只在摆动的时候更新prediff=curdiff
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size()<=1) return nums.size();
int curDiff=0;
int prediff=0;
int result=1;//默认数组nums[nums.size()-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)){
result++;
prediff=curDiff;
}
} return result;
}
};
最大子序和
只要加上nums[i]和变为负数了,则直接开始从nums[i+1]开始计数