分饼干
先拿到一个饼干,然后把这个饼干分配给能满足的人,最后都分完,一定是最大的。
本质就是尽可能多的把饼干分出去,因此把饼干从小到大排序,从小的开始分配
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(s.begin(), s.end());
sort(g.begin(), g.end());
int i = 0;
int j = 0;
int result = 0;
for(; i < s.size() && j < g.size(); i++){
if(s[i] >= g[j] ){
result++;
j++;
}
}
return result;
}
摆动序列
本质就是找极值点
极值点就是斜率发生变化。
int wiggleMaxLength(vector<int>& nums) {
if(nums.size() == 1)
return 1;
else{
int prediff = 0;
int curdiff;
int result = 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;
}
}