代码随想录算法训练营第三十四天
455.分发饼干
题目链接:455.分发饼干
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(),g.end());
sort(s.begin(),s.end());
int index_s = s.size()-1;
int index_g = g.size()-1;
int count = 0;
while(index_s>=0&&index_g>=0){
if(s[index_s]>=g[index_g]){//如果满足胃口,就将饼干和人的指针都向前移动一位,结果+1;
index_g--;
index_s--;
count++;
}else{//只把胃口前移,用当前大的饼干试试更小的胃口,继续循环
index_g--;
}
}
return count;
}
};
376. 摆动序列
题目链接:376. 摆动序列
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
int size = nums.size();
for(int i = 1;i<nums.size()-1;i++){
if(nums[i+1]>nums[i]&&nums[i-1]>nums[i]){//当前比前后两个数都大,不处理
continue;
}else if(nums[i+1]<nums[i]&&nums[i-1]<nums[i]){//当前比前后两个数都小,不处理
continue;
}else{//当前元素在坡上,当前元素和前后某个元素相等,都要删掉当前元素
size--;
}
}
return size;
}
};
53. 最大子序和
题目链接:53. 最大子序和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum = 0;
int max_sum = INT_MIN;
for(int i = 0;i<nums.size();i++){
if(sum<0)sum = nums[i];//之前的和如果小于0就都抛弃,再加当前值也会使当前和变小
else sum =sum+nums[i];//正常加和
max_sum = max(max_sum,sum);//更新最大和
}
return max_sum;
}
};