2023-11-10 LeetCode每日一题(咒语和药水的成功对数)

2023-11-10每日一题

一、题目编号

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

二、题目链接

点击跳转到题目位置

三、题目描述

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

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

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

提示:

  • n == spells.length
  • m == potions.length
  • 1 <= n, m <= 105
  • 1 <= spells[i], potions[i] <= 105
  • 1 <= success <= 1010

四、解题代码

class Solution {
public:
    vector successfulPairs(vector& spells, vector& potions, long long success) {
        sort(potions.begin(), potions.end());
        vector res;
        for (auto& i : spells) {
            long long t = (success + i - 1) / i - 1;
            res.push_back(potions.size() - (upper_bound(potions.begin(), potions.end(), t) - potions.begin()));
        }
        return res;
    }
};

五、解题思路

(1) 二分搜索。

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)