327. Count of Range Sum
2024-08-23 23:03:38
/*
* 327. Count of Range Sum
* 2016-7-8 by Mingyang
*/
public int countRangeSum(int[] nums, int lower, int upper) {
int n = nums.length;
long[] sums = new long[n + 1];
for (int i = 0; i < n; ++i)
sums[i + 1] = sums[i] + nums[i];
return countWhileMergeSort(sums, 0, n + 1, lower, upper);
}
private int countWhileMergeSort(long[] sums, int start, int end, int lower, int upper) {
if (end - start <= 1) return 0;
int mid = (start + end) / 2;
int count = countWhileMergeSort(sums, start, mid, lower, upper)
+ countWhileMergeSort(sums, mid, end, lower, upper);
int j = mid, k = mid, t = mid;
long[] cache = new long[end - start];
for (int i = start, r = 0; i < mid; ++i, ++r) {
while (k < end && sums[k] - sums[i] < lower) k++;
while (j < end && sums[j] - sums[i] <= upper) j++;
while (t < end && sums[t] < sums[i]) cache[r++] = sums[t++];
cache[r] = sums[i];
count += j - k;
}
System.arraycopy(cache, 0, sums, start, t - start);
return count;
}
最新文章
- PLSQL win7 64位
- (转)Do not use ";using"; for WCF Clients - 不要将WCF Client 放在 ‘Using’ 代码块中
- Debian下安装vim
- 【Oracle】使用Oracle的v$sql视图查看近段时间执行的SQL语句
- Windows KB2984972安装后堵住了一个windows 7 桌面可以多个用户远程访问桌面的漏洞。
- 如何从MySQL官方Yum仓库安装MySQL5.6
- jQuery对象与DOM对象
- Linux 与 CONE NAT 和 Symmetric NAT
- JAVAEE filter总结
- Ext JS学习第三天 我们所熟悉的javascript(二)
- 创Wcf案例数据服务
- 使用Github生成燃尽图
- TNS-12541: TNS: 无监听程序 解决方案
- Vue中观察者模式的实现
- 总结:JDK1.5-JDK1.8各个新特性
- SpringMVC注解式开发之接收请求参数
- EUREKA原理总结
- redis性能测试工具的使用
- The ";tsconfig.json"; file must have compilerOptions.sourceMap set to true
- hdu1003 最大子串和