贪心算法之分发饼干
假設你是一位很棒的家長,想要給你的孩子們一些小餅干。但是,每個孩子最多只能給一塊餅干。對每個孩子 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.
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/assign-cookies
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
看到題目第一遍想法,找出餅干中最大的給胃口最大的孩子(最小配最小也一樣),直到餅干給完,孩子吃完為止。第二遍想法:能不能化簡,找到最大的餅干和最大胃口的孩子如果一遍遍搜肯定是復雜了的,那就先排序,u1s1,排序一遍是必須的。想完就動手。
class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());sort(s.begin(),s.end());int i = 0, j = 0, sum = 0;while(i < g.size() && j < s.size()){if(s[j] >= g[i]){sum ++;i++;}j ++;}return sum; } };總結
- 上一篇: openmv串口数据 串口助手_第三课使
- 下一篇: tensorflow计算图_通过从头开始