1508.子数组和排序后的区间和
链接:1508.子数组和排序后的区间和
难度:Medium
标签:数组、双指针、二分查找、排序
简介:请你返回在新数组中下标为 left 到 right (下标从 1 开始)的所有数字和(包括左右端点)。由于答案可能很大,请你将它对 10^9 + 7 取模后返回。
题解 1 - typescript
- 编辑时间:2021-05-13
- 执行用时:436ms
- 内存消耗:75.2MB
- 编程语言:typescript
- 解法介绍:排序。
function rangeSum(nums: number[], n: number, left: number, right: number): number {
const prefixSumList: number[] = [];
let sum = 0;
nums.forEach(v => prefixSumList.push((sum += v)));
const list: number[] = nums.slice();
for (let i = 0; i < n; i++) {
for (let j = 0; j < i; j++) {
list.push(prefixSumList[i] - (prefixSumList[j - 1] ?? 0));
}
}
return (
list
.sort((a, b) => a - b)
.slice(left - 1, right)
.reduce((total, cur) => total + cur, 0) %
(10 ** 9 + 7)
);
}