LeetCode 455 分發餅乾 做題小結

2021-10-13 13:13:25 字數 1141 閱讀 3978

假設你是一位很棒的家長,想要給你的孩子們一些小餅乾。但是,每個孩子最多只能給一塊餅乾。

對每個孩子 i,都有乙個胃口值 g[i],這是能讓孩子們滿足胃口的餅乾的最小尺寸;並且每塊餅乾 j,都有乙個尺寸 s[j] 。如果 s[j] >= g[i],我們可以將這個餅乾 j 分配給孩子 i ,這個孩子會得到滿足。你的目標是盡可能滿足越多數量的孩子,並輸出這個最大數值。

示例 1:

輸入: g = [1,2,3], s = [1,1]

輸出: 1

解釋:

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

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

所以你應該輸出1。

示例 2:

輸入: g = [1,2], s = [1,2,3]

輸出: 2

解釋:

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

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

所以你應該輸出2.

1 <= g.length <= 3 * 104

0 <= s.length <= 3 * 104

1 <= g[i], s[j] <= 231 - 1

通過次數95,703提交次數165,647

為了了滿足更多的小孩,就不要造成餅乾尺寸的浪費。

大尺寸的餅乾既可以滿足胃口大的孩子也可以滿足胃口小的孩子,那麼就應該優先滿足胃口大的。

「這裡的區域性最優就是大餅乾餵給胃口大的,充分利用餅乾尺寸餵飽乙個,全域性最優就是餵飽盡可能多的小孩」。

可以嘗試使用貪心策略,先將餅乾陣列和小孩陣列排序。

然後從後向前遍歷小孩陣列,用大餅乾優先滿足胃口大的,並統計滿足小孩數量。

如圖:

這個例子可以看出餅乾9只有餵給胃口為7的小孩,這樣才是整體最優解,並想不出反例,那麼就可以擼**了。

class solution 

}return result;}}

參考:

LeetCode455 分發餅乾

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

Leetcode 455 分發餅乾

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

leetcode455分發餅乾

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