一、正序
class Solution {
public:
int getCount(vector<int>& g, vector<int>& s, int index){
if(index >= g.size()) return -1;
int i = 0, j = 0, count= 0;
for(i = index; i < g.size() && j < s.size();){
if(g[i] <= s[j]){
count++;
i++;
j++;
}else{
j++;
}
}
return count;
}
int findContentChildren(vector<int>& g, vector<int>& s) {
int i = 0, j = 0;
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int max = -1;
for(int i = 0; i < g.size(); i++){
int count = getCount(g, s, i);
if(max < count)
max = count;
}
return max;
}
};
二、反序
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
int i = g.size() - 1, j = s.size() - 1;
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int count = 0;
for(i, j; i >= 0 && j >= 0;){
if(g[i] <= s[j]){
i--;
j--;
count++;
}else{
i--;
}
}
return count;
}
};