力扣刷题

it2025-05-23  9

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

NO2 序号:455一、题目要求455. 分发饼干示例 1:示例 2:解释:提示: 二、算法思路三、代码实现1.C++2.python3、java 总结


NO2 序号:455

一、题目要求

455. 分发饼干

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

示例 1:

输入: g = [1,2,3], s = [1,1] 输出: 1 解释: 你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。 虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。 所以你应该输出1。

示例 2:

输入: g = [1,2], s = [1,2,3] 输出: 2

解释:

你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。 你拥有的饼干数量和尺寸都足以让所有孩子满足。 所以你应该输出2.

提示:

1 <= g.length <= 3 * 104 0 <= s.length <= 3 * 104 1 <= g[i], s[j] <= 231 - 1

二、算法思路

想法:让胃口小的孩子吃饱,胃口大的就饿着吧

三、代码实现

1.C++

class Solution { public: // static bool cmp(const int &a,const int &b) // { // return a<b; // } int findContentChildren(vector<int>& g, vector<int>& s) { sort(g.begin(),g.end(),greater<int>()); sort(s.begin(),s.end(),greater<int>()); int count = 0; int si=0,gi=0; while(si<s.size() && gi<g.size()) { if (s[si] >= g[gi]){ //饼干能满足孩子 count += 1; si ++; } gi ++; } return count; } };

2.python

代码如下(示例):

class Solution(object): def findContentChildren(self, g, s): """ :type g: List[int] :type s: List[int] :rtype: int """ g.sort() s.sort() count = 0 # for i in range(0,len(g)): # for j in range(0,len(s)): # if g[i] <= s[j]: # count +=1 # s.pop(j) # break i = 0 for a in s: if i == len(g): break if g[i] <= a: count +=1 i += 1 return count

3、java

class Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); Arrays.sort(s); int count = 0; for (int i : s) { if (i >= g[count]){ count++; if (count >= g.length){ return count; } } } return count; } }

总结

提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

最新回复(0)