用 C++ 分配 Cookie
假设我们尝试给孩子们分发一些饼干。但是,我们应该给每个孩子不超过一块饼干。现在,每个孩子 i 都有一个贪婪度 gi,它是孩子会满足的饼干的最小大小;每个饼干 j 有一个大小 sj。当 sj >= gi 时,我们可以把饼干 j 分配给孩子 i,孩子 i 就会满足。我们的目标是最大化满足孩子的数量,并输出最大数量。
因此,如果输入类似于 [1,2],[1,2,3],则输出将是 2,有 2 个孩子和 3 块饼干。2 个孩子的贪婪度为 1、2。现在我们有 3 块饼干,并且它们的大小足够满足所有孩子,因此输出为 2。
为解决这个问题,我们将按照以下步骤操作 -
对数组 g 进行排序
对数组 s 进行排序
i := 0,j = 0
只要 (i < g 的大小且 j < s 的大小) 执行 -
如果 g[i] <= s[j],则 -
(i 加 1)
(j 加 1)
返回 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP