写点什么

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

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

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



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

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

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