【每日一题】咒语和药水的成功对数

news/2025/2/14 2:49:45/

文章目录

  • Tag
  • 题目来源
  • 解题思路
    • 方法一:排序+二分
  • 写在最后

Tag

【排序+二分】【数组】【2023-11-10】


题目来源

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


解题思路

方法一:排序+二分

我们首先对 points 进行升序排序,然后枚举 spells 中的 x,需要找到在 points 中大于等于 ⌈ s u c c e s s x ⌉ \lceil{\frac {success}{x}} \rceil xsuccess 的数量。那我们找到在 points 中大于等于 ⌈ s u c c e s s x ⌉ \lceil{\frac {success}{x}} \rceil xsuccess 最小位置 idx 即可,这样在 points 中大于等于 ⌈ s u c c e s s x ⌉ \lceil{\frac {success}{x}} \rceil xsuccess 的数量就为 points.end() - idx

为什么要找在 points 中大于等于 ⌈ s u c c e s s x ⌉ \lceil{\frac {success}{x}} \rceil xsuccess 的数量?因为 xpoints 中的 y(某一瓶药水的能量强度)要满足:

x y > = s u c c e s s xy >= success xy>=success

找到满足上式的 y 的数量即为 x 对应的答案。上式即为 x > = ⌈ s u c c e s s x ⌉ x >= \lceil{\frac {success}{x}} \rceil x>=xsuccess

实现代码

class Solution {
public:vector<int> successfulPairs(vector<int> &spells, vector<int> &potions, long long success) {sort(potions.begin(), potions.end());for (int &x : spells) {long long target = (success + x - 1) / x;x = potions.end() - lower_bound(potions.begin(), potions.end(), target);}return spells;}
};

复杂度分析

时间复杂度: O ( m l o g m + n l o g m ) O(mlogm+nlogm) O(mlogm+nlogm) m m m 为数组 points 的长度, n n n 为数组 spells 的长度。

空间复杂度: O ( l o g m ) O(logm) O(logm)


写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。


http://www.ppmy.cn/news/1207413.html

相关文章

python爬虫hook定位技巧、反调试技巧、常用辅助工具

一、浏览器调试面板介绍 二、hook定位、反调试 Hook 是一种钩子技术&#xff0c;在系统没有调用函数之前&#xff0c;钩子程序就先得到控制权&#xff0c;这时钩子函数既可以加工处理&#xff08;改变&#xff09;该函数的执行行为&#xff0c;也可以强制结束消息的传递。简单…

【Bug】Python利用matplotlib绘图无法显示中文解决办法

一&#xff0c;问题描述 当利用matplotlib进行图形绘制时&#xff0c;图表标题&#xff0c;坐标轴&#xff0c;标签中文无法显示&#xff0c;显示为方框&#xff0c;并报错 运行窗口报错&#xff1a; 这是中文字体格式未导入的缘故。 二&#xff0c;解决方案 在代码import部…

Linux学习第37天:Linux I2C 驱动实验:哥俩好

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 世界上的很多事物都是成双成对出现的。也包括在驱动开发的过程中&#xff0c;比如I2C中其实就是数据线和时钟线的相互配合才能完成的。 I2C常用于连接各种外设、…

influxdb时序库之Python操作

使用Python操作influxdb时序库 1. 安装三方库 注意区分版本&#xff0c;不同的 influxdb 版本对应安装不同的三方库。 influxdb V1&#xff1a;pip install influxdb influxdb V2&#xff1a;pip install influxdb-client 以下代码都是基于 influxdb 2.4 版本进行操作。 2.…

pytest与testNg自动化框架

一.pytest 1.安装pytest&#xff1a; pip install pytest 2.编写用例 - 收集用例 - 执行用例 - 生成报告 3.pytest如何自动识别用例  识别规则如下&#xff1a; 1、搜索根目录&#xff1a;默认从当前目录中搜集测试用例&#xff0c;即在哪个目录下运行pytest命令&#xff0c;…

汉诺塔 --- 递归回溯算法练习一

目录 1. 什么叫汉诺塔 2. 分析算法原理 2.1. 当盘子的数量为1 2.2. 当盘子的数量为2 2.3. 当盘子的数量为3时 3. 编写代码 3.1. 挖掘重复子问题 3.2. 只关心某一个子问题如何处理 3.3. 递归的结束条件 3.4. 代码的编写 4. 递归展开图分析 1. 什么叫汉诺塔 力扣上的原…

四川思维跳动商务信息咨询有限公司可信吗?

在今天的数字化时代&#xff0c;抖音带货已成为一种全新的商业模式。许多公司都在通过这种形式进行产品推广和销售&#xff0c;其中&#xff0c;四川思维跳动商务信息咨询有限公司以其专业的服务和良好的信誉&#xff0c;在抖音带货领域赢得了广泛赞誉。 四川思维跳动商务信息…

Android Bitmap 裁剪局部

Android Bitmap 裁剪局部 在Android开发中&#xff0c;我们经常会遇到需要对图片进行裁剪的情况。裁剪图片可以提取出我们需要的局部区域&#xff0c;以满足特定的需求&#xff0c;比如头像的裁剪、图片的放大缩小等。本文将介绍如何在Android中使用Bitmap来实现图片的裁剪功能…