leetcode 455. 分发饼干 贪心算法

Example 1:

输入: g = [1,2,3], s = [1,1]
输出: 1
解释:
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。

Example 2:

输入: g = [1,2], s = [1,2,3]
输出: 2
解释:
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出2.

首先对两个列表都进行排序
分配的原则是小的给小的,大的给大的
准确的说就是每一次从剩下的饼干中选择一个满足孩子需求的最小的
每满足一个孩子kid加一
最后若剩下的所用饼干中无法满足孩子所需
则返回kid
若都能满足则返回孩子数量len(s)

class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        if len(s) == 0 or len(g) == 0:
            return 0
        g.sort()
        s.sort()
        i = 0
        j = 0
        kid = 0
        while i < len(g):
            while j < len(s) and g[i] > s[j]:
                    j += 1
            if j >= len(s):
                return kid
            i += 1
            j += 1     
            kid += 1               
        return len(g)

猜你喜欢

转载自blog.csdn.net/weixin_50791900/article/details/111678113