zoukankan      html  css  js  c++  java
  • 分饼干问题

    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

  • 相关阅读:
    Metadata Lock原理5
    Seconds_Behind_Master
    Metadata Lock原理4
    MySQL Troubleshoting:Waiting on query cache mutex 腾讯数据库工程师:幕南风
    Metadata Lock原理2
    Metadata Lock原理1
    Online DDL与pt-online-schema-change
    Solaris 安装JDK
    RAID 概述
    4K Block Size的Device和 Aligned IO
  • 原文地址:https://www.cnblogs.com/mengff/p/12842957.html
Copyright © 2011-2022 走看看