leetcode.455.Assign Cookies
来源:互联网 发布:什么是js对象编程 编辑:程序博客网 时间:2024/06/01 18:18
Description
Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor gi, which is the minimum size of a cookie that the child will be content with; and each cookie j has a size sj. If sj >= gi, we can assign the cookie j to the child i, and the child i will be content. Your goal is to maximize the number of your content children and output the maximum number.
Note:
You may assume the greed factor is always positive.
You cannot assign more than one cookie to one child.
Example 1:
Input: [1,2,3], [1,1]Output: 1Explanation: You have 3 children and 2 cookies. The greed factors of 3 children are 1, 2, 3. And even though you have 2 cookies, since their size is both 1, you could only make the child whose greed factor is 1 content.You need to output 1.
Example 2:
Input: [1,2], [1,2,3]Output: 2Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2. You have 3 cookies and their sizes are big enough to gratify all of the children, You need to output 2.
sln
通过简单分析,可以发现这道题用贪婪算法来实现的话,就是对于每个小孩,尽量找比他的g值大的s值列表中最小的s值。
那么我们首先对g和s两个列表进行升序排序,分别从头开始遍历g和s两个数组,对于每个g和s值,如果g大于s,则当前s无法满足当前g,s指向下一个值。如果g小于等于s,那么当前s是最适合当前g的值(因为s和g都已经排过序了),因此s和g都指向下一个值。这样下来,对于排序后的s和g,我们只需要进行一次遍历就可以找出结果。遍历的时间复杂度为O(n),而排序的复杂度为O(nlogn)。因此整个算法的复杂度为O(nlogn)。python实现如下:
class Solution(object): def findContentChildren(self, g, s): """ :type g: List[int] :type s: List[int] :rtype: int """ if len(g) == 0 or len(s) == 0: return 0 g = sorted(g) s = sorted(s) g_index = 0 s_index = 0 count = 0 while g_index < len(g) and s_index < len(s): if g[g_index] <= s[s_index]: g_index += 1 s_index += 1 count += 1 else: s_index += 1 return count
提交上述算法后发现仅仅比75%+的提交快,然而快速浏览了下discussion却发现大家都是在说这种O(nlogn)的实现,所以暂时还没有进一步优化的思路。
- LeetCode 455. Assign Cookies
- Leetcode-455. Assign Cookies
- LeetCode 455. Assign Cookies
- 【LeetCode】455. Assign Cookies
- leetcode 455. Assign Cookies
- 455. [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
- 455. Assign Cookies [LeetCode]
- leetcode 455. Assign Cookies
- 【Leetcode】455. Assign Cookies
- LeetCode 455. Assign Cookies
- LeetCode | 455. Assign Cookies
- leetcode.455.Assign Cookies
- Java基础学习易错点记录
- 修改远程登录之后的提示界面
- SSL P2515 2014年中山市选拔赛 投票
- 在哪里下载安装python以及如何加入requests库
- 快速学习javaSE基础2-java编程环境搭建基本过程(掌握)
- leetcode.455.Assign Cookies
- STL——不定长数组
- DropMenuWidget(下拉二级菜单)
- Leetcode 455. Assign Cookies
- Android(安卓)产生0-9不重复随机数组高效方法。
- div居中显示
- 纯CSS画三角形,深度解析原理/思维扩展
- [Python模块学习]用qrcode模块生成二维码
- Activity中的数据传送—案例: 购买装备