这个问题策略很简单,就是给每个孩子分配能满足他的最小的饼干。所以我们把两个数组排序,如果当前饼干可以满足当前孩子,就把饼干给当前孩子,否则饼干就不用用更大的一块满足。
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
if(s.empty() || g.empty()) return 0;
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int p1=0;
int p2=0;
int res = 0;
while(p1 < g.size() && p2 < s.size()){
if(g[p1] <= s[p2]){
res ++;
p1 ++;
p2 ++;
}
else p2 ++;
}
return res;
}
};
时间复杂度因为有排序,就变得有点大了。是O(slogs+glogg),主要是因为排序需要花费O(nlogn)的时间复杂度。不知道可不可以不用排序就解决这道题目,在我看来不太可能,主要是因为这个题解法就与数字大小有点关系。