455.分发饼干
先排序,之后大的给大的,小的给小的
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int indexG = 0;
int indexS = 0;
int count = 0;
while(indexG < g.size() && indexS < s.size()){
if(s[indexS] >= g[indexG]){
count++;
indexG++;
indexS++;
}
else indexS++;
}
return count;
}
};
376. 摆动序列
子序列不需要是连续的
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size() == 1) return 1;
if(nums.size() == 2){
if(nums[0] == nums[1]) return 1;
else return 2;
}
//初始递增或递减
int up = 1;
int down = 1;
for(int i = 1; i < nums.size(); i++){
//递增 则把之前递减的最大序列加上
if(nums[i] > nums[i - 1]){
up = down + 1;
}
if(nums[i] < nums[i - 1]){
down = up + 1;
}
}
return max(up, down);
}
};
53. 最大子序和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int pre = nums[0];
int res = nums[0];
for(int i = 1; i < nums.size(); i++){
pre = pre > 0 ? pre + nums[i] : nums[i];
res = max(res, pre);
}
return res;
}
};