第一题
455.分发饼干
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(),g.end());//排序把重复的放在一起
sort(s.begin(),s.end());//排序把重复的放在一起
int i = 0, j = 0;
while(i < s.size() && j < g.size()) {//遍历限制,因为两个数组的个数不一样
if(g[j] <= s[i]) {//寻找符合的贪心值的饼干个数
j++;//贪心值增加
}
i++;//下标增加
}
return j;//返回最大贪心值
}
};
第二题
376. 摆动序列
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size() <= 1) return nums.size();
int pre = 0;//前一个数值差
int cur = 0;//当前数值差
int count = 1;//如果数组的个数大于1那么肯定有一个数值差,所以计数从1开始
for(int i = 0; i < nums.size()-1;i++){//遍历数组
cur = nums[i+1]- nums[i];//计算当前数值差
if(cur > 0 && pre <= 0 || cur < 0 && pre >= 0){//判断前一个数值差和现在的数值差是否是正负数
count++;//计数加一
pre = cur;//更新前一个数值差
}
}
return count;
}
};
第三题
53. 最大子序和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int max = INT_MIN;//最大值
int sum = 0;//子区间总和
for(int i = 0; i < nums.size(); i++){//遍历数组
sum += nums[i];//计算子区间总和
if(sum > max) max = sum;//更新最大值
if(sum <= 0 ) sum = 0;//排除小于等于0的综合或者一开始为负数的数
}
return max;
}
};