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