LeetCode Assign Cookies

LeetCode 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.

妈妈要给若干个孩子分饼干,没人一个饼干,不同饼干有不同的大小,同时不同孩子对饼干有一个最小的要求。问怎样分饼干才能满足最多的孩子的要求,求最多满足的孩子的数目。 明显是贪心的思路,把饼干从大到小排序,孩子的要求也从大到小排序,然后我们先尽量用大的饼干满足要求高的孩子,比如你会用一个100大小的饼干满足一个要求为90的孩子,而不是拿这个饼干满足要求为10的孩子,因为要求越低的孩子,被满足的可能性越高。如果当前最大的饼干都不能满足当前的孩子,则当前的策略满足不了这个孩子。 完整代码如下: [cpp] class Solution { public: int findContentChildren(vector<int>& g, vector<int>& s) { sort(g.begin(), g.end()); sort(s.begin(), s.end()); int i = g.size() – 1, j = s.size() – 1, ans = 0; while (i >= 0) { if (j >= 0 && s[j] >= g[i]) { ++ans; –j; } –i; } return ans; } }; [/cpp] 本代码提交AC,用时582MS。为什么会这么慢呀,后来试了下从小到大给孩子分饼干,也就是用能满足当前孩子的最小饼干,其实原理是一样的,尽量不浪费大的饼干: [cpp] 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, ans = 0; while (i < g.size()) { while (j < s.size() && g[i] > s[j]) { ++j; } if (j >= s.size())break; ++ans; ++i; ++j; } return ans; } }; [/cpp] AC了,但是还是很慢,449MS。。。]]>

Leave a Reply

Your email address will not be published. Required fields are marked *