问题描述:
Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor gi, which is the minimum size of a cookie that the child will be content
Example 2:
Input: [1,2], [1,2,3] Output: 2 Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2. You have 3 cookies and their sizes are big enough to gratify all of the children, You need to output 2.
解决思路:
利用快排分别对cookies的重量以及children的greed factor按照从小到大进行排序,对于cookies设置一个游标,表明该游标是上一个孩子得到cookies之后对应cookies的下一个,然后遍历所有的孩子,对于每个孩子,从cookies的当前游标开始往后搜索满足该孩子的cookies,如果找得到,count++并且重新设置游标的位置,以此类推,知道所有的孩子遍历完或者游标到达cookies的最后一个为止,输出count
具体代码如下
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
int count = 0;
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int currentNum = 0;
for (auto a : g) {
for (; currentNum < s.size(); currentNum++) {
if (s[currentNum] >= a) {
count++;
currentNum++;
break;
}
}
if (currentNum == s.size()) {
break;
}
}
return count;
}
};
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
int count = 0;
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int currentNum = 0;
for (auto a : g) {
for (; currentNum < s.size(); currentNum++) {
if (s[currentNum] >= a) {
count++;
currentNum++;
break;
}
}
if (currentNum == s.size()) {
break;
}
}
return count;
}
};