LeetCode题解:455. 分发饼干,贪心while循环,JavaScript,详细注释
chencl1986 opened this issue · comments
Lee Chen commented
原题链接:https://leetcode-cn.com/problems/assign-cookies/
解题思路:
- 按照题意,孩子将会始终处于等待状态,而饼干可能出现多个都无法满足孩子胃口的情况。
- 例如孩子的胃口为
5
,饼干为[1,2,3,4,5,6]
的话,那么必须要从1到5遍历饼干,才可以查找到可以被吃的饼干。 - 因此可以用while循环遍历饼干,用两个指针分别遍历孩子和饼干,但只有在遇到饼干满足胃口时,孩子的指针才会移动,同时增加。
- 当孩子或者饼干遍历完成时,则退出循环。
/**
* @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;
};