leetcode455。クッキーを配布するための欲張りアルゴリズム

例1:

入力:g = [1,2,3]、s = [1,1]
出力:1
説明:
3人の子供と2人のビスケットがあります.3人の子供の食欲値は1、2、3です。
小さなビスケットは2つありますが、サイズが1なので、食欲が1の子供しか満足できません。
したがって、1を出力する必要があります。

例2:

入力:g = [1,2]、s = [1,2,3]
出力:2
説明:
2人の子供と3人のビスケットがあり、2人の子供の食欲値はそれぞれ1,2です。
あなたが持っているクッキーの数とサイズは、すべての子供たちを満足させるのに十分です。
したがって、2を出力する必要があります。

まず、2つのリストを並べ替えます。
配布の原則は、小さいものを小さいものに、大きいものを大きいものに与えることです。
正確には、子供のニーズを満たす最小のものを選択します。残りのビスケットは毎回。
子供が満足するたびに、子供が1人追加されます。
最後に、残りのビスケットが子供のニーズを満たせない場合は、子供
に戻って、子供
の数を返します。

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