[简单]455. 分发饼干

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

解:这是一个双指针问题【注意,需要有这个敏感度】;其次,这是一个寻找最优解的问题,首先考虑贪心算法;也就是每一步都需要是当前最优解;

我们需要将胃口最小的孩子和最小尺寸的饼干做比较,如果不能满足,则和下一小尺寸的饼干做比较。如果满足了,开始比较下一个胃口相对大的孩子,依次进行下去。根据这个思路,其实就是用两个指针,依次比较两个排序好的数组。
首先将两个数组排序,初始化饼干数组idx=0, 然后遍历孩子数组,依次比较孩子数组的元素与饼干数组[idx]的大小,如果不能满足这个孩子,那么idx+=1,如果当前饼干能满足这个孩子,那么idx+=1,孩子向下循环。
判断条件:如果idx == len(s),那么说明饼干数组循环完了,那么这个问题就结束了。
算法时间复杂度:len(g)+len(s)

你可能感兴趣的:([简单]455. 分发饼干)