LeetCode貪心 455分發餅乾

2021-09-10 07:03:15 字數 1179 閱讀 8165

題目描述:

假設你是一位很棒的家長,想要給你的孩子們一些小餅乾。但是,每個孩子最多只能給一塊餅乾。對每個孩子 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.

思路1.最多能滿足的孩子數是餅乾的總數,因此要好好利用每塊餅乾,怎麼樣叫好好利用呢?將餅乾分配給胃口小於它的尺寸的孩子中,胃口最大的孩子。複雜度c**如下:

int findcontentchildren(int* g, int gsize, int* s, int ssize) ;

int flag = 0;

for (int i = 0; i < ssize; i++)

} if (flag == 1)

} return ans;

}

思路2:優先滿足胃口小的孩子可能使得能滿足的孩子數最多,滿足胃口小的孩子時用小的餅乾滿足。複雜度

int cmp(const void * a, const void * b) 

int findcontentchildren(int* g, int gsize, int* s, int ssize)

return child;

}

leetcode455 分發餅乾 貪心

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

LeetCode 455 分發餅乾 貪心

ps 本題目摘自 leetcode 455 原題 分發餅乾,一道貪心演算法問題 題目描述 假設你是一位家長,想要給你的孩子們一些餅乾,每個孩子最多只能給一塊餅乾。對每個孩子 i 都有乙個胃口值 gi 這是能讓孩子們滿足胃口的餅乾的最小尺寸 對每塊餅乾 j 都有乙個尺寸 sj 如果 sj gi 則可以...

leetcode 455 分發餅乾 貪心

貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態,只與當...