贪心算法-解决分配问题 leetcode455题分发饼干

举报
芝士味的椒盐 发表于 2022/04/19 20:17:06 2022/04/19
【摘要】 👨🏻‍🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟🌈擅长领域:Java、大数据、运维、电子🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏,相应的有空了我也会回访,互助!!!🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!@[TOC] 贪心算法  见名知...

在这里插入图片描述

👨🏻‍🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟
🌈擅长领域:Java、大数据、运维、电子
🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏,相应的有空了我也会回访,互助!!!
🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!


@[TOC]

贪心算法

  见名知意,就是贪心,在对一个问题进行求解的时候,将求解的过程划分为若干个单元,秉着贪心的思想,即在这划分的每一个单元内取最优解,每一步都是最优解,可想而知最后堆砌出来的也是最优的解,主体思想不看远方不切实际的,活好当下,力求每一都最好,当然最后的结果也基本是好的。

leetcode题

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

示例 1:

输入: g = [1,2,3], s = [1,1]
输出: 1
解释: 
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。
示例 2:

输入: g = [1,2], s = [1,2,3]
输出: 2
解释: 
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出2.

题目图解

在这里插入图片描述

Java代码实现

/***
 * <p> 
 *     分发饼干
 * </p>
 * @author  芝士味的椒盐
 * @since   2022/2/6 21:45
*/
public class Solution {
    static int[] g ={1,2,3};
    static int[] s = {1,1};
    public static int findContentChildren(int[] g, int[] s){
//        对两个数组进行排序
        Arrays.sort(g);
        Arrays.sort(s);
//        指针
        int kids = 0;
        int cookies = 0;
        while (kids< g.length && cookies < s.length){
                if (g[kids] <= s[cookies++]) {
                    kids++;
                }
        }
//        kids就是被满足的孩子数
        return kids;
    }
    public static void main(String[] args) {
        System.out.println(findContentChildren(g, s));

    }
}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。