目录
455 分发饼干
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());//把小孩数组排下序
sort(s.begin(), s.end());//把饼干数组排下序
int num = 0;
//i 是小孩, j 是饼干
for(int i = 0, j = 0; i < g.size() && j < s.size(); ){
if(s[j] >= g[i]){//如果饼干尺寸比小孩大
num++;//答案加一位
i++;//孩子下标向后移
j++;//饼干下标向后移
}else if(s[j] < g[i]){
j++;//饼干往后移一位
}
}
return num;
}
};
376 摆动序列
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
int prediff = 0;
int curdiff = 0;
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;//让前一个值等于当前值,而cur在下一个循环就会重新赋值
}
}
return result;
}
};
53 最大子序和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int max = 0;
int sum = 0;
for(int i = 0; i < nums.size(); i++){
sum += nums[i];//把遍历过的数值加起来
if(max < sum) max = sum;//如果当前加出来的数比max大就赋值
if(sum < 0) sum = 0;//如果当前和加起来比0小,就直接赋值成0,抛弃掉之前的加起来的值
}
return max;
}
};