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++代码
|
|