Title:
Assign Cookies
Link to LeetCode:
https://leetcode.com/problems/assign-cookies/
Specification:
 
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. 
Examples:
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. 
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, 
Initial Code and Signature:
public interface Distributer {
	public int findContentChildren(int[] g, int[] s) ;
}
Algorithm:
Run-Time Analysis:
GitHub Project:
https://github.com/m-h-s/Algorithms-Codes/tree/master/26-AssignCookies
Code:
/**
 * @author Mahsa Sadi
 * 
 * @since 2020 - 05 - 08
 * 
 * License Creative Commons
 * 
 * Copyright by Mahsa Sadi
 */
import java.util.*;
import java.util.Collections;
import ArrayOperations.*;
public class DistributerS1 implements Distributer {
	int numberOfContentChildren = 0;
	public int findContentChildren(int[] g, int[] s) {
		/**
		 * Problem: Assign Cookies
		 * 
		 * Description:
		 * 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.
		 * 
		 * 
		 * @see https://leetcode.com/problems/assign-cookies/
		 * 
		 * Solution:
		 * 
		 * 1- Sort cookie size
		 * 2- Sort greed factors
		 * 3- Assign the minimum size to the minimum Greed Factor that matches the size.
		 * 4- Increase count
		 * 5- Continue until all the sizes are checked.
		 * 6- Return count
		 *
		 */
		int i, j;
		i = j = 0;
		boolean assigned;
		int next = 0;
		Arrays.sort(g);
		Arrays.sort(s);
		while (i < s.length && next < g.length )
		{
			assigned = false;
			j = next;
			while (j < g.length && !assigned )
			{
				if (s [i] >= g [j])
				{
					this.numberOfContentChildren ++;
					assigned = true;
					next = j + 1;
				}
				else
					j++; 
			}
			i++;
		}
		return numberOfContentChildren;
	}
}