2389. 和有限的最长子序列
题目链接:2389. 和有限的最长子序列
方法:前缀和 + 二分查找
解题思路
- 根据题意,子序列与
数组的元素顺序无关,因此可以先对 从小到大排序,并计算前缀和 ,此时的 表示原来nums数组 的区间和。 - 那么
,其中 为满足 的 中的最靠后坐标。则此时就变为在 数组中找第一个大于 的下标。
代码
class Solution {
public:
vector<int> answerQueries(vector<int>& nums, vector<int>& queries) {
int m = queries.size();
vector<int> ans(m);
sort(nums.begin(), nums.end());
for (int i = 1; i < nums.size(); i ++ ) nums[i] += nums[i - 1];
for (int i = 0; i < m; i ++ ) ans[i] = upper_bound(nums.begin(), nums.end(), queries[i]) - nums.begin();
return ans;
}
};
复杂度分析
时间复杂度:
空间复杂度:
分类:
leetcode题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】