LeetCode題目(Python實現) 分發餅乾

2021-10-04 01:54:31 字數 2446 閱讀 8312

最小堆最大堆

小結假設你是一位很棒的家長,想要給你的孩子們一些小餅乾。但是,每個孩子最多只能給一塊餅乾。對每個孩子i,都有乙個胃口值gi,這是能讓孩子們滿足胃口的餅乾的最小尺寸;並且每塊餅乾j,都有乙個尺寸sj。如果sj >= gi,我們可以將這個餅乾j分配給孩子i,這個孩子會得到滿足。你的目標是盡可能滿足越多數量的孩子,並輸出這個最大數值。

注意

你可以假設胃口值為正。

乙個小朋友最多只能擁有一塊餅乾。

示例1:

輸入:[1

,2,3

],[1

,1]輸出:

1解釋:

你有三個孩子和兩塊小餅乾,3個孩子的胃口值分別是:1,2

,3。雖然你有兩塊小餅乾,由於他們的尺寸都是1,你只能讓胃口值是1的孩子滿足。

所以你應該輸出1。

示例2:

輸入:[1

,2],

[1,2

,3]輸出:

2解釋:

你有兩個孩子和三塊小餅乾,2個孩子的胃口值分別是1,2。

你擁有的餅乾數量和尺寸都足以讓所有孩子滿足。

所以你應該輸出2.

想法是先用最大的餅乾滿足胃口最大孩子,滿足不了換第二胃口大的;滿足的話換下一塊餅乾。

def

findcontentchildren

(self, g: list[

int]

, s: list[

int])-

>

int:

count =

0 g.sort(reverse=

true

) s.sort(

)for i in g:

ifnot s:

break

if i <= s[-1

]:count +=

1 s.pop(

)return count

執行結果: 通過

執行用時: 184 ms, 在所有 python3 提交中擊敗了91.51%的使用者

記憶體消耗: 14.8 mb, 在所有 python3 提交中擊敗了5.47%的使用者

0# 如果小的餅乾滿足不了貪心指數最小的小朋友,就放棄這個餅乾

# 如果最大的餅乾都滿足不了胃口最大的小朋友,就放棄這個小朋友

題目不算很難,又學到一種小頂堆的資料結構,這篇blog簡單介紹了這個模組。

leetcode 字母異位詞分組(python)

題目 給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。注意 需熟悉字典的相關使用方法 class so...

leetcode 200 島嶼數量 python

給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1示例 2 輸入 11000 11...

leetcode 字母異位詞分組 python3

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。python中使用 字典 維護乙個分組表,鍵值 key...