[JavaScript 刷题] 贪心 - 分配饼干, leetcode 455
Posted GoldenaArcher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaScript 刷题] 贪心 - 分配饼干, leetcode 455相关的知识,希望对你有一定的参考价值。
[javascript 刷题] 贪心 - 分配饼干, leetcode 455
题目地址:455. Assign Cookies
题目
Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie.
Each child
i
has a greed factorg[i]
, which is the minimum size of a cookie that the child will be content with; and each cookiej
has a sizes[j]
. Ifs[j] >= g[i]
, we can assign the cookiej
to the childi
, and the child i will be content. Your goal is to maximize the number of your content children and output the maximum number.
解题思路
要想解决这道题,首先必须要对贪心算法有一定程度的了解:
- 把求解的问题分成若干个子问题
- 对每个子问题求解,得到子问题的局部最优解
- 把子问题的解局部最优解合成原来解问题的一个解
这道题也可以是用同样的方法去理解。
-
把求解的问题分成若干个子问题
每个小孩 是否 能够获得饼干
-
对每个子问题求解,得到子问题的局部最优解
贪心指数最小的小孩应该优先获得饼干(局部最优解)
-
把子问题的解局部最优解合成原来解问题的一个解
计算获得饼干小孩得数量
从题目以及 JavaScript 的特性来说,这道题有两个坑:
-
给的数组是否排序了?
题目中没有说明,因此这道题需要对
s
和g
进行排序 -
JavaScript 内置的排序是否能够解决问题?
JavaScript 内置得排序会将数字转换成字符串进行比较,因此需要传入一个 comparator
使用 JavaScript 解题
总体来说这道题还是很简单的:
var findContentChildren = function (g, s)
g.sort((a, b) => a - b);
s.sort((a, b) => a - b);
let gi = 0,
si = 0;
while (gi < g.length && si < s.length)
if (g[gi] <= s[si])
gi++;
si++;
return gi;
;
以上是关于[JavaScript 刷题] 贪心 - 分配饼干, leetcode 455的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—455. 分发饼干(贪心)—day40