中山大学算法课程题目详解(第六周)

来源:互联网 发布:淘宝网开直通车的要求 编辑:程序博客网 时间:2024/05/20 06:53

问题描述:

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


Example 2:

Input: [1,2], [1,2,3]Output: 2Explanation: 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.

解决思路:

利用快排分别对cookies的重量以及children的greed factor按照从小到大进行排序,对于cookies设置一个游标,表明该游标是上一个孩子得到cookies之后对应cookies的下一个,然后遍历所有的孩子,对于每个孩子,从cookies的当前游标开始往后搜索满足该孩子的cookies,如果找得到,count++并且重新设置游标的位置,以此类推,知道所有的孩子遍历完或者游标到达cookies的最后一个为止,输出count

具体代码如下

class Solution {public:    int findContentChildren(vector<int>& g, vector<int>& s) {int count = 0;sort(g.begin(), g.end());sort(s.begin(), s.end());int currentNum = 0;for (auto a : g) {for (; currentNum < s.size(); currentNum++) {if (s[currentNum] >= a) {count++;currentNum++;break;}}if (currentNum == s.size()) {break;}}return count;}};


原创粉丝点击