方法(贪心):
实现思路
把两个数组进行从小到大排序,依次遍历数组,只要饼干数组当前的元素大于等于孩子数组当前的元素,就向前移动,能满足的孩子数加一;
解释一下为什么从小到大来进行排序,这样排序的好处在于,当孩子被多个糖果满足时,可以优先分配给孩子较小的那个糖果,之后较大的糖果可能多分配给别的孩子
实现代码
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(),g.end());
sort(s.begin(),s.end());
int i=0,j=0,re=0;
while(i<g.size()&&j<s.size()){
if(s[j]>=g[i]){
j++;
i++;
re++;
}
else{
j++;
}
}
return re;
}
};
这里比我的代码稍微改进了一点,用child变量代替了我的re变量
提交结果及分析
时间复杂度O(n)