-
Notifications
You must be signed in to change notification settings - Fork 0
/
分发饼干.js
41 lines (40 loc) · 1.47 KB
/
分发饼干.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
* 分发饼干
*
* 题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
* 对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,
* 都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。
* 你的目标是尽可能满足越多数量的孩子,并输出这个最大数值
*
* 注意:你可以假设胃口值为正。 一个小朋友最多只能拥有一块饼干
*
* 示例:
*
* 输入:[1,2], [1,2,3]
* 输出:2
*
* 你有两个孩子和三块饼干,两个孩子的最小胃口值为 1 和 2,三块饼干的尺寸分别为 1,2,3
* 你拥有的所有饼干尺寸都足以让所有孩子满足
*
* 思路:优先使用最小的饼干满足最小的胃口
*
* 1. 先将孩子的胃口和饼干尺寸做递增排序
* 2. 以最小尺寸的饼干依次尝试,不满足或满足的已分配完成后,换更大尺寸的饼干
* 3. 直到所有孩子都满足或可能满足的饼干分配完
*
*/
const cookieDistribution = (children, cookies) => {
children = children.sort((a, b) => a - b);
cookies = cookies.sort((a, b) => a - b);
let num = 0;
let i = 0;
let j = 0;
while (i < children.length && j < cookies.length) {
if (children[i] <= cookies[j]) {
num++;
i++;
}
j++;
}
return num;
};