Leetcode刷题笔记(455 分发饼干)

Leetcode刷题笔记(455 分发饼干)

题目:详见力扣
主要思路:(贪心算法)

  1. 直观想法:由于每位小朋友的胃口不同,优先满足胃口小的小朋友,显然能够有更多小朋友满足,而对于每个小朋友来说,使用更接近于其胃口的饼干也能够方便更多小朋友满足。
  2. 具体实现:将小朋友的胃口和饼干的大小都从小到大排序。从头开始对每一位小朋友分配饼干,同时使用一个指针指向当前首个待分配的饼干。如果该饼干能够满足小朋友则满足的小朋友个数增加,同时饼干的指针后移;如果不能满足且还有更大的饼干则后移指针继续找,否则结束饼干的分配。
public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g); //从小到大排序
        Arrays.sort(s);
        int j=0;
        int ContentChildren=0;
        for (int i=0;i<g.length;i++)
        {
            while (j<s.length&&s[j]<g[i]) j++; //查找可行的饼干
            //System.out.println("i="+i+" j="+j);
            if (j<s.length) //饼干成功分配
            {
                ContentChildren++;
                j++; //注意j要加表示这个饼干已经使用
            }
            else break;
        }
        return ContentChildren;
    }
}

时间复杂度:不考虑排序部分,则时间复杂度为 O ( m + n ) , n = g . l e n g t h , m = s . l e n g t h O(m+n),n=g.length,m=s.length O(m+n),n=g.length,m=s.length

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值