Re: [闲聊] 每日leetcode

楼主: enmeitiryous (enmeitiryous)   2024-08-04 10:12:11
1508 range sum of sorted subarray sums
题目:
给你一个vector nums,其中包含n个整数,求当你计算出nums所有subarray的个别和
后,将其排序由小到大后,从1-index系统中,从题目给的数字right开始一路加到
left后的这些subarray sum的总和
思路:
可以很直观的照题目叙述先利用一个vector存放nums所有的subarray sum,然后sort
再根据题目给的right left求这段的和。
但题目下面的topic可以看到是有binary search 还有2 pointer的,editorial里面
有介绍另一个用到binary search的最佳解。
int rangeSum(vector<int>& nums, int n, int left, int right) {
vector<long long > pre_ans;
for(int i=0;i<n;++i){
long long temp=0;
for(int j=i;j<n;++j){
temp+=nums[j];
pre_ans.push_back(temp);
}
}
sort(pre_ans.begin(),pre_ans.end());
int mod = 1e9 + 7;
long long ans=0;
for(int i=left-1;i<right;++i){
ans+=pre_ans[i];
}
return ans%mod;
作者: sustainer123 (caster)   2024-08-04 10:14:00
大师
作者: Smallsh (Smallsh)   2024-08-04 10:16:00
大师
作者: sustainer123 (caster)   2024-08-04 10:16:00
我还以为这题考backtracking 我就这样了

Links booklink

Contact Us: admin [ a t ] ucptt.com