您现在的位置:首页 > >

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

发布时间:

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


解题思路:


    按照题意,孩子将会始终处于等待状态,而饼干可能出现多个都无法满足孩子胃口的情况。例如孩子的胃口为5,饼干为[1,2,3,4,5,6]的话,那么必须要从1到5遍历饼干,才可以查找到可以被吃的饼干。因此可以用for循环遍历饼干,用过一个指针作为遍历孩子的索引,遇到可被食用的饼干时,将指针加1,同时被喂饼干的孩子数量也加1。由于用于遍历孩子的指针和可喂饼干的孩子数量始终相等,因此可用同一个变量表示。可能出现孩子已经全部遍历,而饼干还有剩余的情况,因此需要考虑提前退出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;
};


热文推荐
猜你喜欢
友情链接: