分发饼干(贪心)

41 阅读1分钟

该题从题面上来看很明显属于贪心算法的运用——尽可能满足越多数量的孩子

为了达到这个目的,我们必须在每一步分发饼干的时候使用 最小能满足该孩子的饼干 来满足该孩子,所以我们可以先将两个数组进行排序操作

且满足之后,我们计数且排到下一个孩子,注意此时我们还需要排到下一块饼干(为避免同一块饼干分给多个孩子的情况——题目要求一个孩子最多分到一块饼干)

接下来就是代码实现了

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;
    }
};