455. 分发饼干
题目
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标尽可能满足越多数量的孩子,并输出这个最大数值。
注意:
你可以假设胃口值为正。
一个小朋友最多只能拥有一块饼干。
解题思路
先给两个数组排序,然后用两个指针,分别指向G S,
然后去遍历他们,如果满足g[xx]<=s[xx],就给结果+1;
否则把指向S的指针下移一位,继续比较。
代码
/**
解题思路:
先给两个数组排序,然后用两个指针,分别指向G S,
然后去遍历他们,如果满足g[xx]<=s[xx],就给结果+1;
否则把指向S的指针下移一位,继续比较。
**/
class Solution {
public int findContentChildren(int[] g, int[] s) {
int pg=0;
int ps=0;
int num=0;
Arrays.sort(g);
Arrays.sort(s);
while (pg<g.length&&ps<s.length){
if (g[pg]<=s[ps]){
pg++;
num++;
}
ps++;//移动指针PS
// 那么g[4,8,9] s[1,5,7] 因为4比1大,G又是有序的,所以G以后的更不可能小于1了,所以这个时候就要移动指针ps不移动指针pg。
}
return num;
}
}