327. Count of Range Sum
来源:互联网 发布:知鱼之乐的寓意 编辑:程序博客网 时间:2024/05/20 14:18
class Solution {private: int countHelper(vector<long>&sum,int start,int end,int lower,int upper) { if(end-start<=1)//sum个数小于等于1无法求范围 return 0; int mid=(start+end)/2; int count=countHelper(sum,start,mid,lower,upper)+countHelper(sum,mid,end,lower,upper); vector<long> cache(end-start,0); int k=mid;//第一个sum[k]-sum[i]>=lower int j=mid;//第一个sum[j]-sum[i]>upper int t=mid;//sum[t]<sum[i]; int len=0; for(int r=0,i=start;i<mid;i++) { while(k<end&&sum[k]-sum[i]<lower)k++; while(j<end&&sum[j]-sum[i]<=upper)j++; count+=(j-k);//更新count while(t<end&&sum[t]<sum[i])cache[r++]=sum[t++]; cache[r++]=sum[i]; len=r; } for(int i=0;i<len;i++) { sum[start+i]=cache[i]; } return count; }public: int countRangeSum(vector<int>& nums, int lower, int upper) { if(nums.size()==0) return 0; vector<long> sum(nums.size()+1,0); for(int i=1;i<=nums.size();i++) { sum[i]=sum[i-1]+nums[i-1]; } return countHelper(sum,0,nums.size()+1,lower,upper); }};
1 0
- 327. Count of Range Sum
- 327. Count of Range Sum
- 327. Count of Range Sum
- 327. Count of Range Sum
- 327. Count of Range Sum
- 327. Count of Range Sum
- 327. Count of Range Sum
- Count of Range Sum
- <LeetCode OJ> 327. Count of Range Sum
- leetcode 327. Count of Range Sum
- Leetcode 327. Count of Range Sum[hard]
- LeetCode 327. Count of Range Sum
- leetcode 327.Count of Range Sum
- LeetCode 327. Count of Range Sum
- LeetCode 327. Count of Range Sum
- leetcode 327. Count of Range Sum
- 327. Count of Range Sum Hard
- [leetcode]327. Count of Range Sum
- oravle 视图
- 算法导论------递归算法的时间复杂度求解
- Monkey cpu数据获取
- 扫雷2(可以同时排出多位没有雷的位置)
- Monkey测试结果分析
- 327. Count of Range Sum
- 我的项目重构之路二
- ACM篇:POJ 1094 -- Sorting It All Out
- Sqlite3使用
- 实现http文件下载和上传
- U盘装系统
- monkey测试
- 特征工程——特征分类及不同类特征的处理方式
- 运行maven下的settings.bat文件的结果