这道题我先把两个数组排序,然后用了一个嵌套循环,里循环不是每次都从头开始,而且从上一次跳出的地方开始,可以节省很多时间。
int findContentChildren(vector<int>& g, vector<int>& s) {
int count = 0;
sort(g.begin(),g.end());
sort(s.begin(),s.end());
int i = 0;
for (int a:g) {
for (;i<s.size();i++) {
if(s[i]>=a) {
count++;
i++;
break;
} else {
continue;
}
}
}
return count;
}
然后看了discussion,发现用双指诊更好一些,原理都一样。
int findContentChildren(vector<int>& g, vector<int>& s) {
int count = 0;
sort(g.begin(),g.end());
sort(s.begin(),s.end());
int i = 0;
int j = 0;
while (i<g.size() && j<s.size()) {
if (s[j]>=g[i]) {
count++;
i++;
}
j++;
}
return count;
}