前几天因为一些个人问题没有及时完成每日一题,深感抱歉
今天这题我原本的思路是通过排序将符合条件的饼干删除,再统计删除饼干数量就可以得知吃饱孩子的数量
int account=0;
Arrays.sort(g);
Arrays.sort(s);
for (int i=0;i<g.length;i++){
for (int j=0;j<s.length;j++){
if(g[i]<=s[j]){
s[j]=0;
account++;
break;
}
}
}
return account;
可惜两个循环导致时间爆炸了,所以小小改良了一下
int account=0;
Arrays.sort(g);
Arrays.sort(s);
int flag=0;
for (int i=0;i<g.length;i++){
for (int j=flag;j<s.length;j++){
if(g[i]<=s[j]){
s[j]=0;
account++;
flag=j;
break;
}
}
}
return account;
}
然后是题解中给出的贪心算法
int child=0;
int cookies=0;
Arrays.sort(g);
Arrays.sort(s);
while (child<g.length && cookies<s.length){
if(g[child]<s[cookies]){
child++;
}
cookies++;
}
return child;