该题从题面上来看很明显属于贪心算法的运用——尽可能满足越多数量的孩子
为了达到这个目的,我们必须在每一步分发饼干的时候使用 最小能满足该孩子的饼干 来满足该孩子,所以我们可以先将两个数组进行排序操作
且满足之后,我们计数且排到下一个孩子,注意此时我们还需要排到下一块饼干(为避免同一块饼干分给多个孩子的情况——题目要求一个孩子最多分到一块饼干)
接下来就是代码实现了
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,ans=0;
while(i<g.size()&&j<s.size())//注意不要越界
{
if(s[j]>=g[i])//饼干能够满足孩子
{
ans++;//计数
i++;//下一个孩子
}
j++;//下一个饼干
}
return ans;
}
};