我的力扣算法455-分发饼干

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

我的力扣算法455-分发饼干_第1张图片
就是在两个数组种,找匹配的数,在第二个数组中找到至少为第一个数组中数的数,要尽量找到最多,看到最多,就想到了贪心法,看到数组,我就想到了遍历。
代码:

class Solution {
     
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
     
        sort(g.begin(),g.end());//贪心,我要保证每个都相差不大
        sort(s.begin(),s.end());//能吃多少和饼干尺寸从大到小排,然后遍历找到和能此多少相差不大的尺寸
        int gn=g.size(),sn=s.size();
        int ans=0;//匹配数
        for(int i=0,j=0;i<gn&&j<sn;i++,j++){
     
            while(j<sn&&g[i]>s[j]){
     //如果没有超出长度,但是此时的尺寸不能满足,就找下一个尺寸
                j++;
            }
            if(j<sn)
                 ans++;//如果满足,那就匹配到了
        }
        return ans;
    }
};

ok

你可能感兴趣的:(力扣算法练习,贪心算法,算法,leetcode,c++)