Categories:

Tags:



Problem

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 g[i], which is the minimum size of a cookie that the child will be content with; and each cookie j has a size s[j]. If s[j] >= g[i], 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.

Constraints

  • 1 <= g.length <= 3 * 104
  • 0 <= s.length <= 3 * 104
  • 1 <= g[i], s[j] <= 231 - 1

Solution

The problem Assign Cookies can be solved by sorting both given vectors and assigning smallest possible s[j] for each g[i] where s[j] >= g[i].

Implementation

class Solution
{
  public:
    int findContentChildren(vector<int> &g, vector<int> &s)
    {
        sort(g.begin(), g.end());
        sort(s.begin(), s.end());

        int ret = 0;
        for (int idx1 = 0, idx2 = 0; idx1 < g.size() && idx2 < s.size(); idx2++)
            if (g[idx1] <= s[idx2])
            {
                idx1 += 1;
                ret += 1;
            }

        return ret;
    }
};