一、2300. 咒语和药水的成功对数
class Solution {
public:vector<int> successfulPairs(vector<int>& spells, vector<int>& potions, long long success) {vector<int> ans;int n = spells.size(), m = potions.size();sort(potions.begin(), potions.end());for(int i = 0; i < n; i++){int l = -1, r = m;while(l + 1 < r){int mid = l + (r - l) / 2;if ((long long)spells[i] * potions[mid] < success) {l = mid;} else {r = mid;}}ans.push_back(m - r);}return ans;}
};
二、2389. 和有限的最长子序列
class Solution {
public:vector<int> answerQueries(vector<int>& nums, vector<int>& queries) {sort(nums.begin(), nums.end());partial_sum(nums.begin(), nums.end(), nums.begin()); // 原地求前缀和for(int& querie: queries){querie = ranges::upper_bound(nums, querie) - nums.begin();}return queries;}
};
partial_sum(nums.begin(), nums.end(), nums.begin());
求前缀和的神奇代码