题解
简单题,对于“子序列 是由一个数组删除某些元素(也可以不删除)但不改变剩余元素顺序得到的一个数组。”
文章所给出的这句话的意思是即可以随意的更改顺序也不会影响结果,那么就对数组从小到大排列,一个一个判断,看满足要求的最长序列。
代码
class Solution {
public:
vector<int> answerQueries(vector<int>& nums, vector<int>& queries) {
const int maxn = 1e6+5;
int n = nums.size();
int m = queries.size();
sort(nums.begin(),nums.end());
int sum[maxn];
vector<int>ans;
sum[0] = 0;
for(int i = 0; i < m; i++){
int flag = 1;
sum[i] = 0;
for(int j = 0; j < n; j++){
sum[i] += nums[j];
if(sum[i] > queries[i]){
flag = 0;
ans.push_back(j);
break;
}
}
if(flag){
ans.push_back(n);
}
}
return ans;
}
};
该文章介绍了一种方法来解决寻找数组的最长子序列问题,其中子序列可以通过删除某些元素(也可不删除)得到,但不改变剩余元素顺序。首先对数组进行升序排序,然后逐个检查每个查询,累计子序列的和,如果和超过查询值则更新答案。最后返回满足条件的子序列结束位置。

被折叠的 条评论
为什么被折叠?



