LeetCode455. 分发饼干(C++)
Posted 敲代码两年半的练习生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode455. 分发饼干(C++)相关的知识,希望对你有一定的参考价值。
1 题目描述
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。
2 示例描述
2.1 示例1
- 输入: g = [1,2,3], s = [1,1]
- 输出: 1
- 解释:
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。
2.2 示例2
- 输入: g = [1,2], s = [1,2,3]
- 输出: 2
- 解释:
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出2.
3 解题提示
1 <= g.length <= 3 * 10^4
0 <= s.length <= 3 * 10^4
1 <= g[i], s[j] <= 2^31 - 1
4 解题思路
第一步将两个数组排序,然后用一个while语句遍历两个数组的下标,判断小孩胃口是否 <= 饼干量:
1.若小于,则两者都++
2.若大于,则饼干量++
ps:不管是否满足,饼干量都要++
5 代码详解
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 ;
}
};
以上是关于LeetCode455. 分发饼干(C++)的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode——455 Assign Cookies(分发饼干)
LeetCode 455. Assign Cookies (分发曲奇饼干)