LeetCode 2300. 咒语和药水的成功对数(二分查找)
文章目录
- 1. 题目
- 2. 解题
1. 题目
给你两个正整数数组 spells 和 potions ,长度分别为 n 和 m ,其中 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] 。示例 2:
输入:spells = [3,1,2], potions = [8,5,8], success = 16
输出:[2,0,2]
解释:
- 第 0 个咒语:3 * [8,5,8] = [24,15,24] 。总共 2 个成功组合。
- 第 1 个咒语:1 * [8,5,8] = [8,5,8] 。总共 0 个成功组合。
- 第 2 个咒语:2 * [8,5,8] = [16,10,16] 。总共 2 个成功组合。
所以返回 [2,0,2] 。提示:
n == spells.length
m == potions.length
1 <= n, m <= 10^5
1 <= spells[i], potions[i] <= 10^5
1 <= success <= 10^10
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/successful-pairs-of-spells-and-potions
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 数据量很大,需要使用二分查找
- 对
potions
排序后,对每个spell[i]
在potions
中二分查找左侧的success / spell[i]
所在的位置 pos ,pos 往后的都是可以满足的组合
import bisect
import math
class Solution:def successfulPairs(self, spells: List[int], potions: List[int], success: int) -> List[int]:n, ans = len(spells), [0]*len(spells)potions.sort()for i in range(n):t = success/spells[i]pos = bisect.bisect_left(potions, t)ans[i] = len(potions)-posreturn ans
344 ms 34.3 MB Python3
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 2300. 咒语和药水的成功对数(二分查找)相关推荐
- 2022-6-13 咒语和药水的成功对数,替换字符后匹配,统计得分小于 K 的子数组数目,......
1. 咒语和药水的成功对数 You are given two positive integer arrays spells and potions, of length n and m respec ...
- LeetCode 729. 我的日程安排表 I(set 二分查找)
文章目录 1. 题目 2. 解题 2.1 set 二分查找 2.2 差分思想 1. 题目 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内没有其他安排,则可以存储这个新的日程安 ...
- [Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找)
[Golang]力扣Leetcode - 852. 山脉数组的峰顶索引(二分查找) 题目:符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 < ...
- LeetCode 2187. 完成旅途的最少时间(二分查找)
文章目录 1. 题目 2. 解题 1. 题目 给你一个数组 time ,其中 time[i] 表示第 i 辆公交车完成 一趟旅途 所需要花费的时间. 每辆公交车可以 连续 完成多趟旅途,也就是说,一辆 ...
- LeetCode 1901. 找出顶峰元素 II(二分查找)
文章目录 1. 题目 2. 解题 1. 题目 一个 2D 网格中的 顶峰元素 是指那些 严格大于 其相邻格子(上.下.左.右)的元素. 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中 ...
- LeetCode 1838. 最高频元素的频数(二分查找)
文章目录 1. 题目 2. 解题 1. 题目 元素的 频数 是该元素在一个数组中出现的次数. 给你一个整数数组 nums 和一个整数 k . 在一步操作中,你可以选择 nums 的一个下标,并将该下标 ...
- LeetCode 792. 匹配子序列的单词数(二分查找)
文章目录 1. 题目 2. 解题 1. 题目 给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数. 示例: 输入: S = "abcde" ...
- LeetCode 1631. 最小体力消耗路径(DFS + 二分查找)
文章目录 1. 题目 2. 解题 1. 题目 你准备参加一场远足活动.给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row ...
- LeetCode 644. 最大平均子段和 II(二分查找)*
文章目录 1. 题目 2. 解题 2.1 暴力超时 2.2 二分查找 1. 题目 给定一个包含 n 个整数的数组,找到最大平均值的连续子序列,且长度大于等于 k.并输出这个最大平均值. 样例 1: 输 ...
- LeetCode 793. 阶乘函数后K个零(二分查找)
1. 题目 f(x) 是 x! 末尾是0的数量.(回想一下 x! = 1 * 2 * 3 * ... * x,且0! = 1) 例如, f(3) = 0 ,因为3! = 6的末尾没有0:而 f(11) ...
最新文章
- Gartner发布2020年数据与分析领域的十大技术趋势
- OpenStack计算节点AMQP5672报错
- One Day-XML:XSLT
- Python3读取HTML文件
- ELK学习9_ELK数据流传输过程_问题总结2
- ConcurrentModificationException并发修改异常
- Oracle SQL Access Advisor 说明
- jquery ajax传递data,基于jquery ajax中的data传递参数与后台工作的流程
- Servlet学习笔记(四)之请求转发与重定向(RequestDispatcher与sendRedirect)
- java基础知识---IO常用基础操作(一)
- SQL Server 2012 中 SSAS 多维数据浏览器已经废除
- 联想微型计算机扬天M4000e,联想扬天M4000e-00评测:傲腾内存加持下的商务整机
- bat脚本中添加注释
- 中英对照:30句经典英语广告词欣赏
- 本地生成RDL报表文件的创建工具
- faker造数据写入Excel表中
- 量子混沌:相互作用如何影响量子多体系统的局域化?
- uni-app,原生APP,关于苹果APP集成Sign in with Apple(通过Apple登录)后,APP内注册需要强制绑定手机号,审核被拒问题
- CSS 多列等高的几种实现方式
- C# MVC《捷信达酒店管理系统》项目研发技术总结文献