题目:
455. 分发饼干易错点:
- 这两个变量名容易弄混
- s是饼干
- g是胃口
图示:
我的代码:
class Solution:
def findContentChildren(self, g: List[int], s: List[int]) -> int:
# 对饼干s排序
s.sort()
# 对孩子们的胃口g进行排序
g.sort()
# 用两个变量来记录目前的索引下标
child = 0
cookie = 0
while child < len(g) and cookie < len(s):
# 如果饼干s大小满足孩子的胃口g就记录
if s[cookie] >= g[child]:
child +=1
cookie +=1 # 无论满不满足都增加饼干的数量
# 返回满足孩子的数量
return child
老师的代码:
# 登录 AlgoMooc 官网获取更多算法图解
# https://www.algomooc.com
# 作者:程序员吴师兄
# 代码有看不懂的地方一定要私聊咨询吴师兄呀
# 分发饼干( LeetCode 455 ):https:#leetcode-cn.com/problems/assign-cookies/
class Solution:
def findContentChildren(self, g: List[int], s: List[int]) -> int:
# 1、将孩子们的胃口值按照从小到大的顺序排列
# 优先满足胃口小的孩子
g.sort()
# 2、将饼干按照从小到大的顺序排列
s.sort()
# child 代表 g 的下标,即表示有多少孩子的胃口得到满足
child = 0
# child 代表 s 的下标,即表示目前有多少饼干被使用了
cookie = 0
# 遍历所有的饼干
# 遍历过后,饼干只有两种状态
# 1、要么找到了需要这个饼干的孩子
# 2、要么剩下的孩子中,胃口值最低的孩子都大于这个饼干的值,那么这个饼干没人要
while cookie < len(s) and child < len(g) :
# 孩子的胃口得到了满足
if s[cookie] >= g[child] :
# 得到满足的孩子数量加 1
child += 1
# 查看下一个饼干能否找到需要的孩子
cookie += 1
# 最后返回孩子数量
return child
扩展写法:
总结:
- 在机场等飞机的过程中,也可以写代码。
贪心
- 应该是,先求局部最优解,把这个局部最优解转化为全局最优解。
参考:
https://r07na4yqwor.feishu.cn/docx/AeTjdU9gJoRts2xDX5EcQ2CFnYd
标签:day08,饼干,int,孩子,胃口,LC455,cookie,child,贪心 From: https://www.cnblogs.com/liqi175/p/17973641