力扣刷题(第九十二天)
灵感来源
- 保持更新,努力学习
- python脚本学习
分发饼干
解题思路
- 对孩子的胃口值和饼干尺寸数组分别进行升序排序。
- 使用双指针分别遍历两个数组:
- 若当前饼干能满足当前孩子,两个指针均向后移动。
- 若不能满足,仅移动饼干指针尝试更大的饼干。
class Solution:def findContentChildren(self, g: List[int], s: List[int]) -> int:# 对孩子的胃口值和饼干尺寸进行升序排序g.sort()s.sort()# 初始化双指针和计数器i, j, count = 0, 0, 0# 遍历两个数组while i < len(g) and j < len(s):if s[j] >= g[i]:# 当前饼干能满足当前孩子,计数器加1,两个指针后移count += 1i += 1j += 1else:# 当前饼干不能满足当前孩子,尝试下一块更大的饼干j += 1return count
逐行解释
class Solution:def findContentChildren(self, g: List[int], s: List[int]) -> int:# 对孩子的胃口值数组进行升序排序# 确保我们从胃口最小的孩子开始分配饼干g.sort()# 对饼干尺寸数组进行升序排序# 确保我们从最小的饼干开始尝试分配s.sort()# 初始化双指针:i指向孩子数组,j指向饼干数组# count用于记录成功分配的孩子数量i, j, count = 0, 0, 0# 同时遍历两个数组,直到任一数组遍历完毕while i < len(g) and j < len(s):# 如果当前饼干的尺寸能够满足当前孩子的胃口if s[j] >= g[i]:# 成功分配,计数器加1count += 1# 移动到下一个孩子i += 1# 消耗掉当前饼干,移动到下一块饼干j += 1else:# 当前饼干尺寸太小,无法满足当前孩子# 尝试下一块更大的饼干j += 1# 返回成功分配的孩子总数return count