二分查找(九)2300. 咒语和药水的成功对数

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

给你两个正整数数组spellspotions,长度分别为nm,其中spells[i]表示第i个咒语的能量强度,potions[j]表示第j瓶药水的能量强度。

同时给你一个整数success。一个咒语和药水的能量强度相乘如果大于等于success,那么它们视为一对成功的组合。

请你返回一个长度为n的整数数组pairs,其中pairs[i]是能跟第i个咒语成功组合的药水数目。

示例 1:

输入:spells = [5,1,3], potions = [1,2,3,4,5], success = 7输出:[4,0,3]解释:- 第 0 个咒语:5 * [1,2,3,4,5] = [5,10,15,20,25] 。总共 4 个成功组合。 - 第 1 个咒语:1 * [1,2,3,4,5] = [1,2,3,4,5] 。总共 0 个成功组合。 - 第 2 个咒语:3 * [1,2,3,4,5] = [3,6,9,12,15] 。总共 3 个成功组合。 所以返回 [4,0,3] 。

整体思路较为清楚,遍历每一份spells,利用这个spell来进行与potions每个元素乘积结果的判断,使用二分搜索优化,找到第一个大于等于target的位置,后续直接用个数-位置即可

class Solution { public: int lower_bound(int spell, vector<int>& potions, long long target) { int left = 0, right = potions.size()-1; while(left <= right) { int mid = left + (right-left)/2; // long long temp = potions[mid] * spell; // if(potions[mid] < target/spell) if (1LL * potions[mid] * spell < target) left = mid + 1; else right = mid - 1; } return left; } vector<int> successfulPairs(vector<int>& spells, vector<int>& potions, long long success) { int n = spells.size(), m = potions.size(); vector<int> res(n); sort(potions.begin(), potions.end()); for(int i = 0; i < n; i++) { int index = lower_bound(spells[i], potions, success); res[i] = m - index; } return res; } };

主要问题是记录一下long long型元素的结果溢出

以下错误写法:由于potions和spell元素都是int类型,所以他们会先进行相乘,但结果已经超过他们的存储范围了,这时候再用longlong来接收就已经晚了

方案A:使用1LL

long long temp = 1LL * potions[mid] * spell;

方案B:使用显示类型转换

long long temp =static_cast<long long>(potions[mid]) * spell;

int lower_bound(int spell, vector<int>& potions, long long target) { int left = 0, right = potions.size()-1; while(left <= right) { int mid = left + (right-left)/2; long long temp = potions[mid] * spell; if (potions[mid] * spell < target) left = mid + 1; else right = mid - 1; } return left; }

还有就是把乘法转化为除法的形式:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1206019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【实战项目】 微服务架构下的服务健康检查

运行效果:https://lunwen.yeel.cn/view.php?id=5999 微服务架构下的服务健康检查摘要:随着互联网技术的发展,微服务架构在分布式系统中得到了广泛应用。然而,在微服务架构下,如何确保服务的健康状态成为了一个重…

2026年市面上诚信的离心泵源头厂家哪家强,防腐氟塑料泵/衬氟氟塑料泵/氟塑料泵/衬氟离心泵,离心泵工厂联系方式

近年来,随着国内化工、新能源、环保等行业的快速发展,离心泵作为流体输送的核心设备,市场需求持续攀升。据行业统计,2025年国内离心泵市场规模已突破300亿元,年复合增长率达8.2%。然而,市场扩容的同时,也暴露出…

2026生物制药用冷水机组最新市场深度解析:技术、厂商与行业生态全景

一、行业背景:生物制药产业崛起与精密温控需求爆发 随着全球生物医药技术的突破性发展,生物制药产业已成为推动医疗健康领域变革的核心力量。据《2025中国工业制冷设备市场白皮书》数据显示,中国生物制药行业年复合…

[MySQL] 事务的隔离性与 MVCC - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【实战项目】 springboot作业管理系统

运行效果:https://lunwen.yeel.cn/view.php?id=5998 springboot作业管理系统摘要:随着信息技术的飞速发展,Spring Boot框架因其简单易用、开发效率高而受到广泛关注。本论文以Spring Boot框架为基础,设计并实现了…

5.IP地址详解

1、IP地址内网IP:192.168.X.X 以上仅供参考,如有疑问,留言联系

查看SQL server的端口号

用cmd命令 打开 命令行窗口 输入 SQLServerManager11.msc 查看TCP/IP 属性 的IP地址 可以看到SQL server 端口号

SQL Server 支持多种网络协议用于客户端与数据库引擎之间的通信

SQL Server 支持多种网络协议用于客户端与数据库引擎之间的通信。最常见的 3 种数据库连接协议&#xff08;也称为网络协议或通信协议&#xff09;如下&#xff1a;1. TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;最常用、推荐的协议&#…

Java全栈开发面试实战:从基础到高阶的技术对话

Java全栈开发面试实战&#xff1a;从基础到高阶的技术对话 面试官与应聘者介绍 面试官&#xff1a;您好&#xff0c;我是负责技术招聘的高级工程师&#xff0c;今天我们将进行一场关于Java全栈开发的深入交流。首先&#xff0c;请您简单介绍一下自己。 应聘者&#xff1a;您好&…

为什么现在人人都在谈 AI Agent?

AI Agent是能自主规划、执行任务的智能系统&#xff0c;具备规划、记忆和工具调用三大核心能力&#xff0c;适用于开放性复杂任务。文章介绍了三种设计范式&#xff1a;反应式(快速决策)、深思熟虑式(战略规划)和混合式(两者结合)&#xff0c;并强调构建时应避免过度复杂化&…

2026陕西西安灯杆加工厂家推荐:两大实力企业领跑激光切割赛道

在西安基础设施建设与市政工程升级的浪潮中,灯杆加工作为核心配套领域,对加工精度、效率及设备实力的要求持续攀升。激光切割技术凭借高精度、高灵活性的优势,成为灯杆、护栏等金属加工的主流方式。本文结合企业实力…

2026年全国果蔬粉哪家好?选型实用指南 聚焦功能性与场景适配 品牌差异化对比

快节奏生活与健康意识觉醒,让果蔬粉摆脱单一代餐属性,向功能性研发、定制化生产延伸。我国果蔬加工行业需求量2022年已达8326万吨,同比增长13.72%,其中果蔬粉细分领域增速领跑。2026年面对琳琅满目的产品,场景适配…

线缆拉力试验机供应商推荐:盘点从源头到经销商的核心企业

电线电缆的质量直接关系到国民经济的稳定发展和生命财产安全。随着国家对行业监管标准的提高,作为核心质量检测设备的拉力试验机市场正迎来需求增长。 电线拉伸试验机作为电线电缆行业质量控制的关键设备,市场需求逐…

cmake 常用命令解析(工作总结持续更新中)

cmake 常用命令解析 1.属性相关 1.1 获取属性的命令 1.2 设置属性的命令 1.3 获取和设置属性的类型的专门命令 1.3.1 get_target_property 用于查询一个 CMake 目标(target)的某个特定属性的当前值。你可以把它理解为…

【实战项目】 粒子群算法在数据挖掘中的应用研究

运行效果:https://lunwen.yeel.cn/view.php?id=5994 粒子群算法在数据挖掘中的应用研究摘要:随着信息技术的飞速发展,数据挖掘技术在各个领域得到了广泛应用。粒子群算法作为一种优化算法,具有简单易用、收敛速度…

pgsql创建只读账号

--- 创建用户并设置密码和给与连接权限 CREATE USER dendrite_reader WITH PASSWORD 4e20a7aa1514017e12a6; GRANT CONNECT ON DATABASE dendrite TO dendrite_reader; -- 授权 public schema GRANT USAGE ON SCHEMA …

安徽地区小红书代运营全解析:芜湖优选三十六行网络科技破局增长

在当下的数字化营销浪潮中,小红书凭借强大的种草能力和庞大的年轻用户群体,已然成为企业品牌推广、产品变现的核心阵地。对于芜湖本土企业而言,想要在小红书平台实现高效获客与品牌升级,选择一家深耕本地、实力过硬…

2026年百度竞价广告开户推广代运营评测:昊客网络以核心运营策略脱颖而出。

2026年,百度竞价广告市场迎来“效果为王”的深度变革。随着平台算法迭代加速(如oCPC智能出价全面升级、质量度权重提升至35%),企业自主投放普遍面临“开户成本高、转化效率低、账户优化难”三大痛点。数据显示,60…

数字员工与AI销冠系统是什么?主要具备哪些提升商业效率的优势?

数字员工在现代企业中扮演着至关重要的角色&#xff0c;能够有效优化业务流程&#xff0c;降低运营成本&#xff0c;并提升整体效率。这种智能化工具通过自动化执行大量重复性任务&#xff0c;如客户沟通和数据处理&#xff0c;让企业从繁琐事务中解放出来&#xff0c;从而专注…

【实战项目】 HTTP缓存机制在Web系统中的优化

运行效果:https://lunwen.yeel.cn/view.php?id=5995 HTTP缓存机制在Web系统中的优化摘要:随着互联网技术的快速发展,Web系统的性能对用户体验至关重要。HTTP缓存机制作为一种有效的性能优化手段,在Web系统中扮演着…