力扣第25天----第455题、第题、第53题
一、第455题–分发饼干
贪心算法,没有固定的套路。是否使用贪心算法,主要凭感觉。如果没有明显的反例,就可以用贪心算法试试。
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
int count = 0;
int si = s.size() - 1;
int gi = g.size() - 1;
sort(s.begin(), s.end());
sort(g.begin(), g.end());
while(si >= 0 && gi >= 0){
// cout << si << " " << gi << endl;
if(g[gi] <= s[si]){
// gi--;
si--;
count++;
}
gi--;
}
return count;
}
};
二、第376题–摆动序列
这题情况挺多,试了好几次才过,但是总结起来,没啥好提炼的知识点。哈哈~~
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
int prediff = 0;
int curdiff = 0;
int count = 0;
if (nums.size() == 1) return 1;
for (int i = 0 ; i< nums.size() - 1; i++){
curdiff = nums[i] - nums[i+1];
if((prediff>=0 && curdiff <0) || (prediff<=0 && curdiff >0)){
// cout << nums[i] << endl;
count++;
prediff = curdiff;
}
}
//if(curdiff !=0) count++;
count += 1;
return count;
}
};
三、第53题–最大子数组和
类似于找规律,然后实现出来。
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum = 0;
int reslut = INT_MIN;
for (int i =0; i<nums.size(); i++){
sum += nums[i];
if (sum > reslut) reslut = sum;
if(sum < 0 ) sum = 0;
}
return reslut;
}
};