LeetCode#455 Assign Cookies题解(C++版)
来源:互联网 发布:日本高考数学知乎 编辑:程序博客网 时间:2024/06/07 15:40
题干
原题网址:
https://leetcode.com/problems/assign-cookies/description/
知识点
贪心算法
题干解析
爸妈给小朋友分饼干。每个小朋友i都有对饼干大小的要求gi,他们只接受体积大于或等于自己的要求的饼干,而饼干数量也是有限的,每个饼干j大小为Sj。目标是要用这些有限的饼干尽量满足更多个小孩的需求(得到饼干的小孩的数量越多越好)。给你两个数组,第一个数组代表各个小孩对饼干大小的要求,第二个数组代表现在有的各个饼干的大小,要你输出最多能满足多少个小孩的需求。
解题思路
直观地来想,我们要用有限的饼干满足更多的小朋友的需求,那么我们就不能“浪费”我们的饼干。每个孩子都只接受体积大于或等于他的要求的饼干,完全不浪费的方法是每个饼干刚好满足那个孩子的需求,但是饼干的大小和孩子的需求并不存在一一对应的关系,所以我们只能尽量浪费得少一些,即分给小孩的饼干大于他的需求的差值最小化。如果我们分给一个小孩的饼干比他自己的需求大太多的话,直观上理解就是一种浪费。客观分析,假设这个孩子只需一块比这个饼干小得多的小饼干就满足了,这块大饼干可以给一个饭量更大(需求更大)的孩子,那么大小饼干就能一共满足两个小孩,但是现在小孩子拿了大饼干,而小饼干不能满足大孩子的需求,我们就只能满足一个小孩。
所以!我们可以采用的想法的,饼干一个个地分配,每分配一个饼干,查询需求大小小于这个饼干的体积的小孩,在这些小孩中找到一个需求最大的,将这块饼干分给他。全部分配完之后,就得到我们要的结果了。
代码
class Solution {public: int findContentChildren(vector<int>& g, vector<int>& s) { int ans = 0; int index; int cha; for (int i = 0; i < s.size(); i++) { cha = s[i] + 1; index = -1; for (int j = 0; j < g.size(); j++) { if (g[j] != -1 && s[i] >= g[j] && (s[i] - g[j]) < cha) { cha = s[i] - g[j]; index = j; } } if (index != -1) { g[index] = -1; ans++; } } return ans; }};
阅读全文
0 0
- LeetCode#455 Assign Cookies题解(C++版)
- LeetCode题解:Assign Cookies
- [LeetCode题解]455. Assign Cookies
- LeetCode(455)Assign Cookies
- Leetcode 455 Assign Cookies
- [LeetCode-455]Assign Cookies
- Leetcode 455 Assign Cookies
- leetcode-455-Assign Cookies
- [Leetcode 455] Assign Cookies
- leetcode 455 Assign Cookies
- Leetcode #455 Assign Cookies
- Leetcode #455 Assign Cookies
- Leetcode #455 Assign Cookies
- LeetCode #455: Assign Cookies
- LeetCode 455 Assign Cookies
- leetcode 455 Assign Cookies C++
- leetcode 455. Assign Cookies(C语言,堆排序)28
- LeetCode455. Assign Cookies题解
- 【J2SE】final、finalize、finally区别
- 指针
- 1056递归计算
- ionic多选框redio
- Hexo搭建出现的错误
- LeetCode#455 Assign Cookies题解(C++版)
- Mat类型遍历图像的三种方法
- 索引优化策略(1)
- 作业:找出“你、我、他”在Unicode表中的位置
- Linux 基础学习篇11(管理网络)
- SphereFace的翻译,解读以及训练
- 网络管理
- 51nod 1057 N的阶乘 (水题ing……)
- c#暂停n秒