在C ++中分配Cookie

假设我们正在尝试向孩子分发一些cookie。但是,我们最多应该给每个孩子一个cookie。现在,每个孩子我都有一个贪婪因子gi,这是该孩子将满意的cookie的最小大小;每个cookie j的大小均为sj。当sj> = gi时,我们可以将cookie j分配给子i,而子i将很满足。我们的目标是最大限度地增加内容子级的数量并输出最大数量。

因此,如果输入类似于[1,2],[1,2,3],则输出将为2,有2个子代和3个cookie。2个孩子的贪婪因子为1、2。现在我们有3个cookie,它们的大小足以满足所有孩子的需要,因此输出为2。

为了解决这个问题,我们将遵循以下步骤-

  • 排序数组g

  • 对数组进行排序

  • i:= 0,j = 0

  • 而(i <g的大小而j <s的大小),做-

    • (将i增加1)

    • 如果g [i] <= s [j],则-

    • (将j增加1)

    • 还给我

    示例

    让我们看下面的实现以更好地理解-

    #include <bits/stdc++.h>
    using namespace std;
    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;
          while (i < g.size() && j < s.size()) {
             if (g[i] <= s[j])
                i++;
                j++;
             }
             return i;
          }
    };
    main(){
       Solution ob;
       vector<int> v = {1,2}, v1 = {1,2,3};
       cout << (ob.findContentChildren(v, v1));
    }

    输入值

    {1,2}, {1,2,3}

    输出结果

    2