企业快速建站系统,苏州注册公司网上核名,东莞专业网站推广需要多少钱,wordpress构建自己的网站文章目录 前言LeetCode、2300. 咒语和药水的成功对数【中等#xff0c;排序二分】题目及类型思路及代码 资料获取 前言
博主介绍#xff1a;✌目前全网粉丝2W#xff0c;csdn博客专家、Java领域优质创作者#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域… 文章目录 前言LeetCode、2300. 咒语和药水的成功对数【中等排序二分】题目及类型思路及代码 资料获取 前言
博主介绍✌目前全网粉丝2Wcsdn博客专家、Java领域优质创作者博客之星、阿里云平台优质作者、专注于Java后端技术领域。
涵盖技术内容Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。
博主所有博客文件目录索引博客目录索引(持续更新)
视频平台b站-Coder长路 LeetCode、2300. 咒语和药水的成功对数【中等排序二分】 来源LeetCode专题《LeetCode 75》 题目及类型
题目链接LeetCode、2300. 咒语和药水的成功对数
类型基础算法/二分 思路及代码
思路
首先对药水能量强度数组进行排序接着我们去遍历所有的咒语接着我们对药水能量数组进行二分通过使用咒语与药水能量乘积来进行二分寻找边界值来确定成功对数。 代码
复杂度分析时间复杂度O(n.logn)空间复杂度O(1)
class Solution {//排序二分//找到最右边不成功的组合的最后一个位置public int[] successfulPairs(int[] spells, int[] potions, long success) {int n spells.length, m potions.length;//结果数组int[] res new int[n];//对potions升序Arrays.sort(potions);//遍历所有的药水for (int i 0; i n; i ) {int ans 0;//二分int l 0, r m - 1;while (l r) {//若是拆分为[l, mid - 1]、[mid, r]那么一旦有r mid - 1需要1为l r 1int mid (l r 1) 1;// System.out.printf(mid%d\n, mid);if (check(1L * spells[i] * potions[mid], success)) {r mid - 1;}else {l mid;}}//找到目标值// System.out.printf(%d %d\n, l, r);//全部成功根据r的情况值来判定if (r 0 || (r 0 1L * spells[i] * potions[0] success)) {ans m;}else if (l m || (l m - 1 1L * spells[i] * potions[m - 1] success)) { //全部不匹配根据l的情况值来判定ans 0;}else {//若是找到区间范围的ans m - l - 1;}//将结果添加到结果集res[i] ans;}return res;}//检测public boolean check(long cur, long success) {if (cur success) return true;return false;}}资料获取
大家点赞、收藏、关注、评论啦~
精彩专栏推荐订阅在下方专栏
长路-文章目录汇总算法、后端Java、前端、运维技术导航博主所有博客导航索引汇总开源项目Studio-Vue—校园工作室管理系统(含前后台SpringBootVue)博主个人独立项目包含详细部署上线视频已开源学习与生活-专栏可以了解博主的学习历程算法专栏算法收录
更多博客与资料可查看获取联系方式文末获取开发资源及更多资源博客获取 整理者长路 整理时间2024.1.19