欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > leetcode 2300. 咒语和药水的成功对数

leetcode 2300. 咒语和药水的成功对数

2025/2/6 23:59:43 来源:https://blog.csdn.net/qq_62172019/article/details/145406838  浏览:    关键词:leetcode 2300. 咒语和药水的成功对数

题目如下
在这里插入图片描述
数据范围
在这里插入图片描述
示例
在这里插入图片描述

注意到n和m的长度最长达到10的5次方所以时间复杂度为n方的必然超时。
因为题目要求我们返回每个位置的spell对应的有效对数所以我们只需要找到第一个有效的药水就行,这里可以先对potions排序随后使用二分查找把时间复杂度压到nlogn就不会超时。

通过代码

class Solution {
public:int findl(vector<int>& nums,long long v,long long target){int n = nums.size();int l = 0,r = n - 1;int mid = (l + r) / 2;while(l < r){if(v * nums[mid] >= target){r = mid;}else{l = mid + 1;}mid = (l + r) / 2;}if(v * nums[l] < target)return 0;return n - l;}vector<int> successfulPairs(vector<int>& spells, vector<int>& potions, long long success) {int n = spells.size(); sort(potions.begin(),potions.end());vector<int> ans;for(int i = 0;i < n;i++){ans.emplace_back(findl(potions,spells[i],success));}return ans;}
};

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com