【Leetcode】455. Assign Cookies分发饼干

  1. Assign Cookies
    Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor gi, which is the minimum size of a cookie that the child will be content with; and each cookie j has a size sj. If sj >= gi, we can assign the cookie j to the child i, and the child i will be content. Your goal is to maximize the number of your content children and output the maximum number.
    Note:
    You may assume the greed factor is always positive.
    You cannot assign more than one cookie to one child.

Example 1:
Input: [1,2,3], [1,1]
Output: 1
Explanation: You have 3 children and 2 cookies. The greed factors of 3 children are 1, 2, 3.
And even though you have 2 cookies, since their size is both 1, you could only make the child whose greed factor is 1 content.
You need to output 1.
Example 2:
Input: [1,2], [1,2,3]
Output: 2
Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2.
You have 3 cookies and their sizes are big enough to gratify all of the children,
You need to output 2.
【大意+思路】

给孩子发饼干,每个孩子想要的大小为g[i],每个饼干大小为s[j], 如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。
目标是尽可能满足越多数量的孩子,并输出这个最大数值。
每个孩子尽量拿到和他想要的大小差距最小的饼干,就能保证数量最大。

那么我们首先将两个数组先排序。
遍历期望尺寸的数组和饼干尺寸的数组
如果饼干尺寸符合则两个数组都向前进一,表示有一个饼干满足了一个小孩;
如果饼干尺寸不符合,则饼干数组向前进一,尝试下一个饼干。

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;
        int count = 0;
        while(i < g.size() && j<s.size())
        {            
            if(g[i] <= s[j])
               {
                i++;
                j++;
                count++;
            }
            else 
             j++;
        }
        return count;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_42703504/article/details/84871572
今日推荐