写点什么

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

用户头像
Lee Chen
关注
发布于: 2020 年 12 月 02 日
LeetCode题解:455. 分发饼干,贪心while循环,JavaScript,详细注释

原题链接: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;
};



发布于: 2020 年 12 月 02 日阅读数: 18
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:455. 分发饼干,贪心while循环,JavaScript,详细注释