分饼干问题

Posted mengff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分饼干问题相关的知识,希望对你有一定的参考价值。

1、题目描述
  
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,
都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。
你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

注意事项:你可以假设胃口值为正。一个小朋友最多只能拥有一块饼干。

2. 算法分析:

1. 使用贪心算法
2. 贪心策略:尽量将大的饼干分配给胃口大的孩子

function main(){
    //胃口值数组
    let g = {5, 10, 2, 9, 15, 9};
    //饼干尺寸值数组
    let s = {6, 1, 20, 3, 8};
    let max = getMax(g, s);
    console.log(‘max: ‘, max);
}

function getMax(g,s){
    //两个数组都从小到大排序
    g.sort();
    s.sort();
    
    //代表第几个孩子得到满足
    let child = 0,
    //代表当前是第几个饼干
        cookie = 0;
    
    //当孩子的胃口被满足,孩子的索引加1,无论孩子的胃口是否被满足,饼干的索引都加1
    //如此一直用后面的大饼干来满足当前孩子的胃口
    while(child < g.length && cookie < s.length){
        if(g[child] <= s[cookie]){
            child++;
        }
        cookie++;
    }

    //满足胃口的孩子数量,即为最大值
    return child;
}

 

参考:https://www.cnblogs.com/BaoZiY/p/10861390.html

以上是关于分饼干问题的主要内容,如果未能解决你的问题,请参考以下文章

58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)

LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段

贪心分饼干/分水杯

leetcode 分饼干问题

12分饼干--2017网易春招

455. 分发饼干『简单』