3477.将水果放入篮子II
implementation, https://leetcode.cn/problems/fruits-into-baskets-ii/
给你两个长度为 n 的整数数组,fruits 和 baskets,其中 fruits[i] 表示第 i 种水果的 数量,baskets[j] 表示第 j 个篮子的 容量。
你需要对 fruits 数组从左到右按照以下规则放置水果:
- 每种水果必须放入第一个 容量大于等于 该水果数量的 最左侧可用篮子 中。
- 每个篮子只能装 一种 水果。
- 如果一种水果 无法放入 任何篮子,它将保持 未放置。
返回所有可能分配完成后,剩余未放置的水果种类的数量。
示例 1
输入: fruits = [4,2,5], baskets = [3,5,4]
输出: 1
解释:
fruits[0] = 4放入baskets[1] = 5。fruits[1] = 2放入baskets[0] = 3。fruits[2] = 5无法放入baskets[2] = 4。
由于有一种水果未放置,我们返回 1。
示例 2
输入: fruits = [3,6,1], baskets = [6,4,7]
输出: 0
解释:
fruits[0] = 3放入baskets[0] = 6。fruits[1] = 6无法放入baskets[1] = 4(容量不足),但可以放入下一个可用的篮子baskets[2] = 7。fruits[2] = 1放入baskets[1] = 4。
由于所有水果都已成功放置,我们返回 0。
提示:
n == fruits.length == baskets.length1 <= n <= 1001 <= fruits[i], baskets[i] <= 1000
python
from typing import List
class Solution:
def numOfUnplacedFruits(self, fruits: List[int], baskets: List[int]) -> int:
cnt = 0
used_baskets = [False] * len(baskets)
for fruit in fruits:
for i, basket in enumerate(baskets):
if not used_baskets[i] and fruit <= basket:
used_baskets[i] = True
break
else:
cnt += 1
return cnt
if __name__ == "__main__":
sol = Solution()
#print(sol.numOfUnplacedFruits([4,2,5], [3,5,4])) # 0
#print(sol.numOfUnplacedFruits([3,6,1], [6,4,7]))
#print(sol.numOfUnplacedFruits([8, 5], [1, 8]))# 1
print(sol.numOfUnplacedFruits([7,4,2,9,7], [5,2,6,7,7])) # 0