455.分发饼干
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end()); // 排序孩子的胃口
sort(s.begin(), s.end()); // 排序饼干的大小
int count =0;
int i =0;
int j =0;
int size = g.size();
while(i < g.size() && j < s.size()){
if(g[i]<=s[j]){
i++;
j++;
count++;
}
else{
j++;
}
}
return count;
}
};
376. 摆动序列
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size() <= 1) return nums.size();
int currDiff = 0;
int preDiff = 0;
int result = 1;
for( int i =0 ;i<nums.size()-1;i++){
currDiff = nums[i+1] - nums[i];
if((preDiff<=0 &&currDiff>0) || (preDiff>=0 && currDiff<0)){
result++;
preDiff = currDiff;
}
}
return result;
}
};
这道题思路就是找波峰和波谷,然后需要考虑的是单调的时候怎么办 这个 preDiff = currDiff; 写到if里面就是为了找到下一个相反的点 比如波峰 然后下个位置是波谷的时候才能进到if里面去。
53. 最大子序和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int Maxsum =nums[0];
int sum = nums[0];
for(int i =1; i<nums.size(); i++){
sum = max(nums[i],sum+nums[i]);
Maxsum = max(Maxsum,sum);
}
return Maxsum;
}
};