分发饼干 | LeetCode- | 贪心算法
贪心练习题
1.题目描述
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
对每个孩子 i
,都有一个胃口值 g[i]
,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j
,都有一个尺寸 s[j]
。如果 s[j] >= g[i]
,我们可以将这个饼干 j
分配给孩子 i
,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。
示例 1:
1 | 输入: g = [1,2,3], s = [1,1] |
示例 2:
1 | 输入: g = [1,2], s = [1,2,3] |
提示:
1 <= g.length <= 3 * 104
0 <= s.length <= 3 * 104
1 <= g[i], s[j] <= 231 - 1
注意:本题与 2410. 运动员和训练师的最大匹配数 题相同。
2.题解
2.1 贪心-写法1
- 排序: 首先对孩子的胃口和饼干的大小进行排序,以便从最大的开始分配。
- 双指针方法: 使用两个指针,一个指向孩子的胃口数组,另一个指向饼干数组。
- 贪心算法: 尝试使用最大的饼干去满足胃口最大的孩子,如果能够满足,就将孩子的数量加一,并移动到下一个饼干。
- 返回结果: 最后返回可以满足的孩子数量。
1 | class Solution { |
2.2 贪心-写法2
- 排序: 首先对孩子的胃口数组 (
g
) 和饼干的大小数组 (s
) 进行排序,以便从小到大进行比较。 - 双指针方法: 使用两个指针,
i
指向饼干数组,j
指向孩子的胃口数组。 - 贪心算法: 遍历饼干数组,检查当前饼干是否能够满足当前孩子的胃口:
- 如果可以满足,移动到下一个孩子并增加满足的孩子数量。
- 返回结果: 最后返回可以满足的孩子数量。
1 | class Solution { |
-------------本文结束感谢您的阅读-------------