在 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