2300. 咒语和药水的成功对数
分析
- 排序药水数组:
- 为了快速确定满足条件的药水,我们对药水数组
potions
进行升序排序
- 为了快速确定满足条件的药水,我们对药水数组
- 二分查找:
- 对于每个咒语
spells[i]
,计算所需药水的最小能量值:target = (success + spells[i] - 1) / spells[i]
- 使用二分查找找到第一个大于等于
target
的药水位置pos
- 满足条件的药水数量为
m - pos
,其中m
是药水数组的长度
- 对于每个咒语
- 返回结果:
- 对每个咒语计算成功组合的药水数量,并存储在结果数组
res
中
- 对每个咒语计算成功组合的药水数量,并存储在结果数组
时间复杂度
- 药水数组排序:
O(mlogm)
- 对每个咒语进行二分查找:
O(nlogm)
总时间复杂度:O(mlogm + nlogm)
空间复杂度
空间复杂度为 O(n)
C++代码
|
|