news 2026/2/22 23:06:17

D.二分查找-进阶——2300. 咒语和药水的成功对数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
D.二分查找-进阶——2300. 咒语和药水的成功对数

题目链接:2300. 咒语和药水的成功对数(中等)

算法原理:

解法一:暴力枚举(超时)

时间复杂度O(N²)

依次枚举每一个spellspotions的乘积,判断是否符合条件

解法二:二分查找

击败24.90%

时间复杂度O(Nlogn)

枚举每一个spells的同时对potions排序,这样才能够进行二分

那么符合题意的条件就变成了potions[mid]*spells[i]>=success,取的结果是大于等于,故采用“求最左端点”的模板,把所需的mid位置看成右区间的最左端点,如果没有最左端点就是最左端点右侧的值,这样都是能满足条件的

小细节:

①不要用t=(int)(success/spells[i])来作为目标值,因为整数除法会导致判断条件失效

②二分结束后,需要额外判断一下,因为此时left和right都停在了所需mid或者mid的右侧,但如果停在了最后一个位置,恰好最后一个位置的乘积也是<success,那么符合条件的计数就应该是0,而不是1

Java代码:

class Solution { //暴力解法 public int[] successfulPairs(int[] spells, int[] potions, long success) { int n=spells.length; int m=potions.length; int[] pairs=new int[n]; for(int i=0;i<n;i++){ int count=0; for(int x:potions){ long tmp=(long)spells[i]*x; if(tmp>=success) count++; } pairs[i]=count; } return pairs; } }
class Solution { //二分查找优化 public int[] successfulPairs(int[] spells, int[] potions, long success) { int n=spells.length; int m=potions.length; int[] pairs=new int[n]; Arrays.sort(potions); for(int i=0;i<n;i++){ int left=0,right=m-1; while(left<right){ int mid=left+(right-left)/2; if((long)potions[mid]*spells[i]<success) left=mid+1; else right=mid; } pairs[i]=(long)potions[left]*spells[i]>=success?m-left:0; } return pairs; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/17 1:48:54

D.二分查找-进阶——1385. 两个数组间的距离值

题目链接&#xff1a;1385. 两个数组间的距离值&#xff08;简单&#xff09; 算法原理&#xff1a; 大致思路与&#x1f447;相同&#xff0c;这题还稍微简单些 D.二分查找-进阶——2300. 咒语和药水的成功对数 解法&#xff1a;二分查找 对于arr1中的每一个元素x&#xff0c;…

作者头像 李华
网站建设 2026/2/16 14:49:07

Free-NTFS-for-Mac完全指南:苹果电脑免费读写NTFS磁盘终极方案

Free-NTFS-for-Mac完全指南&#xff1a;苹果电脑免费读写NTFS磁盘终极方案 【免费下载链接】Free-NTFS-for-Mac Nigate&#xff0c;一款支持苹果芯片的Free NTFS for Mac小工具软件。NTFS R/W for macOS. Support Intel/Apple Silicon now. 项目地址: https://gitcode.com/gh…

作者头像 李华
网站建设 2026/2/16 9:51:41

MarkText主题定制全攻略:从入门到精通的5个核心技巧

MarkText主题定制全攻略&#xff1a;从入门到精通的5个核心技巧 【免费下载链接】marktext &#x1f4dd;A simple and elegant markdown editor, available for Linux, macOS and Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/marktext 想要打造完全个性化的…

作者头像 李华
网站建设 2026/2/21 16:42:08

全面了解 Cookies、Session 和 Token

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

作者头像 李华
网站建设 2026/2/21 4:23:34

Calibre-Douban插件:一键获取豆瓣图书元数据的终极解决方案

还在为手动整理电子书信息而烦恼吗&#xff1f;Calibre-Douban插件就是你的电子书元数据管理神器&#xff01;这款基于网络爬虫技术的Calibre插件&#xff0c;能够智能抓取豆瓣图书网站的完整书籍信息&#xff0c;让电子书库瞬间变得井井有条。&#x1f4da; 【免费下载链接】c…

作者头像 李华
网站建设 2026/2/21 16:40:51

C#三大核心实战:字典、文件操作与委托全面解析

一、字典&#xff08;Dictionary&#xff09; 1. 核心特性 键值对集合&#xff1a;Dictionary<TKey, TValue>&#xff0c;键必须唯一&#xff0c;值可重复 快速查找&#xff1a;基于哈希表实现&#xff0c;键的查找接近O(1) 非线程安全&#xff1a;多线程需使用Concur…

作者头像 李华