455.分发饼干
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
int nG = g.size(), nS = s.size();
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int gIndex = 0, sIndex = 0;
int ans = 0;
while(sIndex < nS){
if(gIndex < nG && s[sIndex] >= g[gIndex]){ // 先满足小的
gIndex++;
ans++;
}
sIndex++;
}
return ans;
}
};
376. 摆动序列
贪心取极值
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
int ans = nums.size(), n = ans;
if(ans == 1 || ans == 0){
return ans;
}
int diff = 0;
for(int i = 1; i < n; i++){
if(nums[i] == nums[i - 1]){
ans--;
continue;
}
if(diff == 0){
diff = nums[i] - nums[i - 1];
}else if(diff > 0){
if(nums[i] - nums[i - 1] > 0){
ans--;
}else{
diff = nums[i] - nums[i - 1];
}
}else{
if(nums[i] - nums[i - 1] < 0){
ans--;
}else{
diff = nums[i] - nums[i - 1];
}
}
}
return ans;
}
};
53. 最大子序和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
if(nums.size() == 0){
return 0;
}
int sum = nums[0], curSum = 0;
int right = 0, n = nums.size();
while(right < n){
curSum += nums[right];
sum = max(sum, curSum);
if(curSum < 0){
curSum = 0;
}
right++;
}
return sum;
}
};