Skip to content

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

Description

@chencl1986

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

解题思路:

  1. 按照题意,孩子将会始终处于等待状态,而饼干可能出现多个都无法满足孩子胃口的情况。
  2. 例如孩子的胃口为5,饼干为[1,2,3,4,5,6]的话,那么必须要从1到5遍历饼干,才可以查找到可以被吃的饼干。
  3. 因此可以用while循环遍历饼干,用两个指针分别遍历孩子和饼干,但只有在遇到饼干满足胃口时,孩子的指针才会移动,同时增加。
  4. 当孩子或者饼干遍历完成时,则退出循环。
/**
 * @param {number[]} g
 * @param {number[]} s
 * @return {number}
 */
var findContentChildren = function (g, s) {
  // 先将g和s都排序,按顺序对比保证不会出现遗漏
  g.sort((a, b) => a - b);
  s.sort((a, b) => a - b);
  // 获取孩子和饼干的数量
  const sLength = s.length;
  const gLength = g.length;
  // 分别使用两个指针遍历孩子和饼干
  let gIndex = 0;
  let sIndex = 0;
  // 存储吃到饼干的孩子数量
  let count = 0;

  // 当孩子和指针任意一个被遍历完成时,即可知道结果,退出循环
  while (gIndex < gLength && sIndex < sLength) {
    if (s[sIndex] >= g[gIndex]) {
      // 若饼干可被食用,则两个指针一起移动,匹配下一个元素
      sIndex++;
      gIndex++;
      // 统计吃到饼干的孩子数量
      count++;
    } else {
      // 若饼干不可被食用,则继续继续匹配下一个饼干,孩子处于等待状态
      sIndex++;
    }
  }

  return count;
};

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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