在 C++ 中分配 Cookie

c++server side programmingprogramming

假设我们试图将一些 Cookie 分发给孩子们。但是,我们应该给每个孩子最多一块 Cookie。现在每个孩子 i 都有一个贪婪因子 gi,这是孩子会满意的 Cookie 的最小大小;每个 Cookie j 都有一个大小 sj。当 sj >= gi 时,我们可以将 Cookie j 分配给孩子 i,孩子 i 会感到满意。我们的目标是最大化满意的孩子数量并输出最大数量。

因此,如果输入为 [1,2]、[1,2,3],则输出将为 2,有 2 个孩子和 3 块 Cookie。 2 个孩子的贪婪因子分别为 1、2。现在我们有 3 块饼干,它们的大小足以满足所有孩子的需求,因此输出为 2。

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

  • 对数组 g 进行排序

  • 对数组 s 进行排序

  • i := 0, j = 0

  • 当 (i < g 的大小且 j < s 的大小) 时,执行 −

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

      • (将 i 增加 1)

    • (将 j 增加1)

  • return i

示例

让我们看下面的实现,以便更好地理解 −

#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

相关文章