[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 factor g[i], which is the minimum size of a cookie that the child will be content with; and each cookie j has a size s[j]. If s[j] >= g[i], we can assign the cookie j to the child i, and the child i will be content. Your goal is to maximize the number of your content children and output the maximum number.

解题思路

要想解决这道题,首先必须要对贪心算法有一定程度的了解:

  1. 把求解的问题分成若干个子问题
  2. 对每个子问题求解,得到子问题的局部最优解
  3. 把子问题的解局部最优解合成原来解问题的一个解

这道题也可以是用同样的方法去理解。

  1. 把求解的问题分成若干个子问题

    每个小孩 是否 能够获得饼干

  2. 对每个子问题求解,得到子问题的局部最优解

    贪心指数最小的小孩应该优先获得饼干(局部最优解)

  3. 把子问题的解局部最优解合成原来解问题的一个解

    计算获得饼干小孩得数量

从题目以及 JavaScript 的特性来说,这道题有两个坑:

  1. 给的数组是否排序了?

    题目中没有说明,因此这道题需要对 sg 进行排序

  2. 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

Leetcode刷题100天—455. 分发饼干(贪心)—day40

贪心策略---分配饼干

java刷题--455分发饼干

贪心算法题解