LeetCode:455. 分发饼干

简介: LeetCode:455. 分发饼干

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

来源:力扣(LeetCode) 链接:leetcode.cn/problems/as…


思路

简而言之,这里的贪心策略是,给剩余孩子里最小饥饿度的孩子分配最小的能饱腹的饼干。

至于具体实现,因为我们需要获得大小关系,一个便捷的方法就是把孩子和饼干分别排序。

这样我们就可以从饥饿度最小的孩子和大小最小的饼干出发,计算有多少个对子可以满足条件。

/**
 * @param {number[]} g
 * @param {number[]} s
 * @return {number}
 */
var findContentChildren = function(g, s) {
    let cnt = 0;
    g = g.sort((a,b) =>  b - a);
    s = s.sort((a,b) =>  a - b);
    for(let i = 0; i < g.length; i++) {
        for(let j = 0; j < s.length; j++) {
            if(g[i] <= s[j]) {
                cnt++;
                g[i] = NaN;
                s[j] = NaN;
            }
        }
    }
    return cnt;
};
复制代码


/**
 * @param {number[]} g
 * @param {number[]} s
 * @return {number}
 */
var findContentChildren = function(g, s) {
    let child = 0;
    let cookie = 0;
    g = g.sort((a,b) =>  a - b);
    s = s.sort((a,b) =>  a - b);
    while(child < g.length && cookie < s.length) {
        if(g[child] <= s[cookie]) ++child;
        ++cookie;
    }
    return child;
};



目录
相关文章
|
Java
leetcode-455:分发饼干
leetcode-455:分发饼干
111 0
|
算法 Python
【Leetcode刷题Python】455.分发饼干
文章提供了解决LeetCode "分发饼干" 问题的Python实现代码,使用了排序和贪心算法。首先将孩子的胃口值和饼干的尺寸分别进行升序排序,然后通过双指针的方式遍历,尝试为每个孩子分配尺寸足够大的饼干,直到所有的孩子都得到满足或饼干分配完毕,返回满足的孩子数量的最大值。
92 2
|
存储 算法 数据可视化
如何使用多种算法解决LeetCode第135题——分发糖果问题
如何使用多种算法解决LeetCode第135题——分发糖果问题
|
算法
力扣经典150题第十五题:分发糖果
力扣经典150题第十五题:分发糖果
102 0
|
算法 机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
[经典力扣面试题]135. 分发糖果
[经典力扣面试题]135. 分发糖果
|
算法
leetcode代码记录(分发饼干
leetcode代码记录(分发饼干
120 0
leetcode:455. 分发饼干
leetcode:455. 分发饼干
78 0
|
Java
leetcode-135:分发糖果
leetcode-135:分发糖果
94 0
|
算法 定位技术
六六力扣刷题贪心算法之分发饼干
六六力扣刷题贪心算法之分发饼干
122 0

热门文章

最新文章