Byte Ebi's Logo

Byte Ebi 🍤

每天一小口,蝦米變鯨魚

[LeetCode] #455 Assign Cookies (Easy)

LeetCode 第 455 題 Assign Cookies,難度 Easy

Ray

用 Python3 解 LeetCode 系列,Assign Cookies,屬於 Easy

原始題目

Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie.

Each child i has a greed factor g[i], which is the minimum size of a cookie that the child will be content with; and each cookie j has a size s[j]. If s[j] >= g[i], we can assign the cookie j to the child i, and the child i will be content. Your goal is to maximize the number of your content children and output the maximum number.

Example 1:

Input: g = [1,2,3], s = [1,1]
Output: 1
Explanation: You have 3 children and 2 cookies. The greed factors of 3 children are 1, 2, 3.
And even though you have 2 cookies, since their size is both 1, you could only make the child whose greed factor is 1 content.
You need to output 1.

Example 2:

Input: g = [1,2], s = [1,2,3]
Output: 2
Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2.
You have 3 cookies and their sizes are big enough to gratify all of the children,
You need to output 2.

Constraints:

  • 1 <= g.length <= 3 * 104
  • 0 <= s.length <= 3 * 104
  • 1 <= g[i], s[j] <= 231 - 1

題目分析

有一串小孩的胃口,和另一串餅乾數量。要滿足最多小孩的胃口

解題過程

看到這種滿足OO、讓最多XX怎樣怎樣的題目,馬上反應使用貪婪演算法

  1. 排序胃口跟餅乾
  2. 餅乾從最小到最大,依序餵飽小孩
  3. 餵飽後計數器 +1
  4. 如果餅乾無法滿足指定的小孩,則跳出迴圈
  5. 回傳可滿足的小孩數量
class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        g.sort()
        s.sort()

        # 可以餵飽的小孩數量
        res = 0
        
        # 遍歷所有餅乾
        for i in range(len(s)):
            # 如果可餵飽的數量小於小孩總數,且餅乾大小大於下一個小孩的胃口。則餵飽數量 +1
            if res < len(g) and s[i] >= g[res]:
                res += 1
            else:
                break
        return res

結果

result

最新文章

Category

Tag