455.Assign Cookies
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 with; and each cookie j has a size sj.
If sj >=
gi,
we can assign the cookie j to the child i, and the child i will be content. Your goal is to maximize the number of your content children and output the maximum number.
算法思路:
简单说来就是先给greed最大的分最大的cookie,如果分到了,count加1,再给剩下的greed最大的分剩下的最大的cookie;
如果greed最大的没有得到满足就略过,不分了,给剩下的greed最大的分,过分了啊!
所以,此处先将两个数组排序,默认应该是快排,再从后至前分配,算法消耗 2*nlogn +n = nlogn,复杂度为O(nlogn);
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int i = g.size()-1, j = s.size()-1;
int count = 0;
while(i>=0 && j>=0){
if(g[i] <= s[j]){
count++;
i--;
j--;
}else{
i--;
}
}
return count;
}
};