java相关-贪心算法-分发饼干-力扣455

package com.company;


import java.util.*;

public class Main {

    public static void main(String[] args) {

        int[] g = {1,2,3};//小孩的胃口
        int[] s = {1, 1};//饼干大小
        int nums = findContentChildren(g,s);


        System.out.println(nums);
    }

    public static int findContentChildren(int[] g, int[] s) {
        int result=0;
        if(g==null||s==null||g.length==0||s.length==0){
            return 0;
        }

        Arrays.sort(g);//升序排列
        Arrays.sort(s);//升序排列

        int index=s.length-1;//倒序遍历


        //思路:尽量用大的饼干去满足胃口大的小孩
        for(int i=g.length-1;i>=0;i--){//倒序遍历
            if(index>=0&&g[i]<=s[index]){
                result++;
                index--;//只有饼干被用了,才往前移动

            }
        }
        return result;
    }


}

public class Main {

    public static void main(String[] args) {

        int[] g = {10,9,8,7};//小孩的胃口
        int[] s = {5,6,7,8};//饼干大小
        int nums = findContentChildren(g,s);
        System.out.println(nums);
    }

    public static int findContentChildren(int[] g, int[] s) {
        int result=0;
        if(g==null||s==null||g.length==0||s.length==0){
            return 0;
        }

        Arrays.sort(g);//升序排列
        Arrays.sort(s);//升序排列

        int index=0;//升序遍历


        //思路:尽量用小的饼干去满足胃口小的小孩
        for(int i=0;i<s.length;i++){//升序遍历
            if(index<g.length&&g[index]<=s[i]){
                result++;
                index++;//只有小孩被满足了才往后移

            }
        }
        return result;
    }


}

以上为两种解法:第一种解法用大的饼干先满足大胃口的小孩,第二种解法先用小的饼干尽量满足小胃口小孩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值