题目:https://leetcode-cn.com/problems/assign-cookies/
简单思路:先排序,再累计计数。
为什么是贪心,优先满足胃口小的孩子,用最少的饼干来喂给胃口最小的孩子,这样就可以达到一个局部最优,对于本问题,每一个的局部最优就是全局最优。
class Solution {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int count =0 ;
for(int i=0; i<s.length; i++){
for(int j=count; j<g.length; j++){
if(s[i]>=g[j]){
count++;
break;
}
}
}
return count;
}
}
优化:减少循环
class Solution {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int child = 0, cookie =0;
while(child<g.length &&cookie<s.length){
if(g[child]<=s[cookie]){
child++;
}
cookie++;//饼干太小就不要了
}
return child;
}
}