Skip to content

LeetCode题解:455. 分发饼干,贪心for循环,JavaScript,详细注释 #230

@chencl1986

Description

@chencl1986

原题链接:https://leetcode-cn.com/problems/assign-cookies/

解题思路:

  1. 按照题意,孩子将会始终处于等待状态,而饼干可能出现多个都无法满足孩子胃口的情况。
  2. 例如孩子的胃口为5,饼干为[1,2,3,4,5,6]的话,那么必须要从1到5遍历饼干,才可以查找到可以被吃的饼干。
  3. 因此可以用for循环遍历饼干,用过一个指针作为遍历孩子的索引,遇到可被食用的饼干时,将指针加1,同时被喂饼干的孩子数量也加1。
  4. 由于用于遍历孩子的指针和可喂饼干的孩子数量始终相等,因此可用同一个变量表示。
  5. 可能出现孩子已经全部遍历,而饼干还有剩余的情况,因此需要考虑提前退出for循环。
/**
 * @param {number[]} g
 * @param {number[]} s
 * @return {number}
 */
var findContentChildren = function(g, s) {
  // 统计吃到饼干的孩子数量,由于该值和遍历g的索引相等,因此使用count遍历g
  let count = 0;
  // 先将g和s都排序,按顺序对比保证不会出现遗漏
  g.sort((a, b) => a - b);
  s.sort((a, b) => a - b);

  // 遍历每个饼干,查找可以食用它的孩子
  for (const cookie of s) {
    // 如果当前饼干>=孩子的胃口,则可以食用
    if (cookie >= g[count]) {
      // 将count加1,同时完成了计数和枚举下一个要匹配的孩子
      count++;
      // 如果出现已经没有孩子,但饼干还存在的情况,则提前退出循环
      if (count === g.length) {
        break;
      }
    }
  }

  return count;
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions