前情提要:
因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。
贪心方法:局部最优推出全局最优。
如果一个题你觉得可以用局部最优推出全局最优,并且没有反例来反驳的话就可以用贪心来试试。
题目思路:
局部最优:让每一个大饼干尽可能的去满足每一个胃口大的孩子
如果不好理解可以取反例思考 : 如果让大饼干去给一个小胃口的孩子 那是不是亏了。更大胃口的孩子就满足不了
完整代码:
class Solution {
public int findContentChildren(int[] g, int[] s) {
//先给胃口和饼干进行排序
Arrays.sort(g);
Arrays.sort(s);
int index = s.length - 1;
int result = 0;
//遍历每一个胃口的小孩 从大胃口往后面遍历
for(int i = g.length - 1;i >= 0; i--){
//如果有大饼干可以满足大胃口的孩子就将饼干给该孩子
//如果不能满足就等待下一个可以满足的 从而实现动态的满足大胃口的孩子
if(index >= 0 && s[index] >= g[i]){
result ++;
index --;
}
}
return result;
}
}
这一篇博客就到这了,如果你有什么疑问和想法可以打在评论区,或者私信我。
我很乐意为你解答。那么我们下篇再见!