生活随笔
收集整理的這篇文章主要介紹了
LeetCode 445 分发饼干
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
假設你是一位很棒的家長,想要給你的孩子們一些小餅干。但是,每個孩子最多只能給一塊
餅干。對每個孩子 i,都有一個胃口值 g[i],這是能讓孩子們滿足胃口的餅干的最小尺寸;并且每塊
餅干 j,都有一個尺寸 s[j] 。如果 s[j] >= g[i],我們可以將這個餅干 j 分配給孩子 i ,這個孩子
會得到滿足。你的目標是盡可能滿足越多數量的孩子,并輸出這個最大數值。
題解
使用貪心的策略,每次先用小餅干滿足胃口小的孩子。
代碼
class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end()); // 排序sort(s.begin(),s.end());int cnt=0; // 滿足的孩子數量for (int i=0,j=0;i<g.size()&&j<s.size();j++){if (g[i]<=s[j]){cnt++; // 數量加一i++; // 分配給下一個孩子}}return cnt;}
};
說明:首先對兩個數組進行排序,注意這里每次循環時什么時候i++,什么時候j++,由于i表
示孩子的胃口值,本題中應該優先滿足胃口值小的孩子,假設滿足的最大的個數是cnt,那么
一定是排序之后的前cnt個,所以只有當當前餅干夠滿足時才會i++,當前餅干j如果夠滿足孩子
i,則j++,如果不夠則看下一個餅干夠不夠,所以j在每次循壞時均要++。
總結
以上是生活随笔為你收集整理的LeetCode 445 分发饼干的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。