力扣分發餅乾問題

2021-10-12 20:47:07 字數 1226 閱讀 3050

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

對每個孩子 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

由題可知,由「貪心」的原則,只要滿足胃口大的吃大的,胃口小的吃小的即可。

**即每乙個小孩吃到的餅乾要等於自己的胃口值或者大於自己的胃口值,但應該盡可能的保證這個「大於」為很小的「大於」。**即如對於四個小孩的胃口值為5,6,7,9時,若有三塊6,8,9大小的餅乾,9大小的餅乾都能吃,但是有乙個小孩的胃口值與9大小相等,那就給他吃這個。而對於8餅乾,除了最後乙個小孩之外也都能吃,但沒有與其餅乾大小相等的胃口值的小孩,那怎麼辦呢?應該秉持著「很小的大於」原則。即給與餅乾大小最接近的乙個胃口值的小孩即可。

int

cmp(

int*x,

int*y)

intfindcontentchildren

(int

* g,

int gsize,

int* s,

int ssize)

else

if(s[i]

>g[j])if

(j==gsize-

1&&index!=gsize)

//即沒等於的情況下遍歷完了小孩胃口度時出現過能吃該餅乾的小孩的情況時}}

return sum;

}

leetcode 分發餅乾

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

Leetcode 分發餅乾

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

演算法 Assign Cookies 分發餅乾

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