把官方的思路写出来了而已。。。
题目
思路
//排序
int sortData(int* q,int qSize){
//边界条件
if(qSize<=1)return 0;
int a = 0;
int b = qSize-2;
int temp,i;
while(1){
//左标记
for(i=a;i<qSize-1;i++){
if(q[i]>q[qSize-1]){
a = i;break;
}
}
if(i==qSize-1){sortData(q,qSize-1);return 0;}
//右标记
for(i=b;i>-1;i--){
if(i==a){
temp = q[a];
q[a] = q[qSize-1];
q[qSize-1] = temp;
sortData(q,a);
sortData(&q[a+1],qSize-a-1);
return 0;
}else if(q[i]<q[qSize-1]){
temp = q[i];
q[i] = q[a];
q[a] = temp;
break;
}
}
}
}
int findContentChildren(int* g, int gSize, int* s, int sSize){
sortData(g,gSize);
sortData(s,sSize);
int res = 0;
int st = 0;
int i,j;
for(i=0;i<gSize;i++){
for(j=st;j<sSize;j++){
if(s[j]>=g[i]){
res += 1;
st = j+1;
break;
}else if(j == sSize-1)
return res;
}
}
return res;
}
结果