【LeetCode455】-分发饼干

方法(贪心):

实现思路

把两个数组进行从小到大排序,依次遍历数组,只要饼干数组当前的元素大于等于孩子数组当前的元素,就向前移动,能满足的孩子数加一;
解释一下为什么从小到大来进行排序,这样排序的好处在于,当孩子被多个糖果满足时,可以优先分配给孩子较小的那个糖果,之后较大的糖果可能多分配给别的孩子
在这里插入图片描述

实现代码

class Solution {
    
    
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
    
    
        sort(g.begin(),g.end());
        sort(s.begin(),s.end());
        int i=0,j=0,re=0;
        while(i<g.size()&&j<s.size()){
    
    
            if(s[j]>=g[i]){
    
    
                j++;
                i++;
                re++;
            }
            else{
    
    
                j++;
            }
        }
        return re;
    }
};

在这里插入图片描述这里比我的代码稍微改进了一点,用child变量代替了我的re变量

提交结果及分析

在这里插入图片描述
时间复杂度O(n)

猜你喜欢

转载自blog.csdn.net/weixin_44944046/article/details/113486290