LeetCode-分发饼干

题目链接 => 戳这里

题目截图

解析

这道题是典型的贪心算法,其实就是求局部最优解,这道题的每个局部其实就是要求用最小的饼干去满足孩子的胃口。那我们可以将饼干和孩子的胃口都排下序,然后遍历孩子和饼干,每次找到的第一个满足 cookie[i] >= child[j]的,就是满足条件的饼干,这时,满足的孩子数可以加1,然后遍历下一个孩子,和下一个饼干;

解法

class Solution {
    public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int chileNum = 0;
        int cookieNum = 0;
        while (chileNum < g.length && cookieNum < s.length) {
            // 饼干大小满足孩子的胃口
            if (g[chileNum] <= s[cookieNum]) {
                chileNum ++;
            }
            // 1.满足孩子的胃口,那这块饼干就分出去了,需要偏移
            // 2.不满足孩子胃口,因为孩子胃口已经排序过了,所以更加不可能满足后面孩子的胃口了
            cookieNum ++;
        }

        return chileNum;
    }
}

你可能感兴趣的:(LeetCode-分发饼干)