LeetCode2300咒语和药水的成功对数

2024-05-31 22:28

本文主要是介绍LeetCode2300咒语和药水的成功对数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

  

解析

  先对药水排序后每个咒语去二分查找最低满足的药水的位置。

class Solution {public int[] successfulPairs(int[] spells, int[] potions, long success) {int n = spells.length, m = potions.length;Arrays.sort(potions);for (int i = 0; i < n; i++) {long target = (success - 1) / spells[i];if (target < potions[m - 1]) {spells[i] = m - binarySearch(potions, (int) target + 1);} else{spells[i] = 0;}}return spells;}private int binarySearch(int[] nums, int target) {int left = 0, right = nums.length;while (left < right) {int mid = left + ((right - left) >> 1);if (nums[mid] < target) {left = mid + 1;} else {right = mid;}}return left;}
}

  这题还有更快的解法,也就是示例代码最快的那个。代码首先找能满足的最低条件,相当于是一个剪枝操作,然后对于能满足的都在数组中加一,最后求前缀和,因为当前能够满足那么它之前的一定能满足,最后对应查找就行了。

class Solution {static int inf = (int)1e5;public int[] successfulPairs(int[] spells, int[] potions, long success) {int max = 0;for (int x:spells) if(x > max) max = x;int minPotion = (int)Math.min(inf, (success+max-1) / max);int[] count = new int[max + 1];for (int potion : potions) {if (potion >= minPotion) ++count[(int)((success + potion - 1) / potion)];}for (int i = 1; i <= max; i++)count[i] += count[i - 1];int n = spells.length;  int[] result = new int[n];         for (int i = 0; i < n; i++) result[i] = count[spells[i]];return result;}
}

在这里插入图片描述

这篇关于LeetCode2300咒语和药水的成功对数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019205

相关文章

我成功在本地打开了Cesium啦!

1首先下载Node.js,我是跟着这篇下载的,https://zhuanlan.zhihu.com/p/77594251,不过这后面的我没弄对Cesium环境配置也没影响。 另外:我看其他推文说,在终端写node -v和npm-v查node和npm的版本可以检测node和npm是否下载成功。 2然后我在CesiumB站官号看的教学视频,跟着下载Cesium源代码。 Cesium基础入门1-零

Android三方登录,微信登录成功后闪屏问题

最近项目要加一个微信登录的功能,发现登录成功后进入WXEntryActivity界面,这个界面是微信来处理接受登录,分享等结果的。关闭的时候this.finish();界面闪烁,虽然不影响功能,但看起来狠辣眼,然后我就想是不是主题的原因,我索性将这个界面的主题设置为透明的 <activity android:name=".wxapi.WXEntryActivity"android:label="

解决解压缩时的错误提示 “无法成功完成操作, 因为文件包含病毒或者潜在垃圾文件“

近期, 有一些朋友反馈在解压zip压缩包, 或者在安装软件的过程中出现了下面的错误提示: "无法成功完成操作, 因为文件包含病毒或者潜在垃圾文件" "Operation did not complete successfully because the file contains a virus or potentially unwanted software" 上述错误一般

Flink实时计算指标对数方案

来源:大数据技术与架构读者投稿 作者:诸葛子房 点击右侧关注,大数据开发领域最强公众号! 点击右侧关注,暴走大数据! By  大数据技术与架构 作者简介: 诸葛子房 ,目前就职于一线互联网公司,从事大数据相关工作,了解互联网、大数据相关内容,一直在学习的路上 。

成功进行云迁移与现代化的7个关键步骤

随着全球逐渐从供应链噩梦和因封锁及控制措施引起的通胀急剧上升中恢复正常,一个显而易见的问题是:运营成本必须降低。 但这不仅仅是成本问题;商业领袖还必须准备好增加股东价值,并为客户和目标市场提供最优价值。尽管实现这一目标的方法有很多,但没有一种方法能在云迁移的所有三个方面达到这种效果。 然而,云迁移和现代化的实施部分往往充满挑战,这些挑战可能迅速逆转甚至阻碍任何已经实现的收益。以下是七个成功的云

数据结构基础之《(2)—对数器》

一、认识对数器 1、你在网上找到了某个公司的面试题,你想了好久,感觉自己会做,但是你找不到在线测试, 2、你和朋友交流面试题,你想了好久,感觉自己会做,但是你找不到在线测试 3、你在网上做笔试,但是前几个测试用例都过了,突然一个巨大无比数据量来了,结果你的代码报错了,如此大的数据量根本看不出哪错了 二、对数器怎么用 1、你想要测的方法a(你设计的流程时间复杂度低,但是不知道对不对) 2、实现

用来作弊的药水(快速幂)

链接: https://www.nowcoder.com/acm/contest/90/L 来源:牛客网 题目描述 在一个风雨交加的夜晚,来自异世界的不愿透露姓名的TMK同学获得了两种超强药水A、B。根据说明书,TMK知道了这两种药水的作用:     (1)药水A能使人的生命值提高,每饮用1个单位能使他生命值变成原来的x倍,即每饮用p个单位能使他的生命值变成原来的x^p(x的p

maven依赖成功引入添加,但是提示程序包不存在

启动时显示程序包不存在 查看了依赖,是存在在该依赖模块的,也在父依赖添加了子依赖的module模块 解决方案 方案1,不过对我没效果 方案2 重载父模块即可成功运行

【HDU】5958 New Signal Decomposition【离散对数下的FFT】

题目链接:【HDU】5958 New Signal Decomposition 在此先感谢小q对我的指导,没有q老师的帮助,估计永远也做不出来了。 首先我们考虑对这个式子做离散对数。令 g g为pp的某个原根,则有: bi=∑p−1j=0aj⋅r(i,j) \quad b_i=\sum_{j=0}^{p-1}a_j\cdot r(i,j) bi=∑p−1j=0aj⋅2sin32πi⋅j

后端发送数据成功,前端也接收成功,但是显示不出来

提示: shouye.vue:128 [Vue warn]: Property "LiuyanData" was accessed during render but is not defined on instance. at <PopularPets onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< Proxy(Object) {getdata: