区域和检索-数组不可变
解题思路:
-
先得到前缀和数组 prefixSums;
-
数组 arr 的下标范围 [start,end] 的子数组的和为 prefixSums[end+1]−prefixSums[start];
复杂度:
-
时间复杂度:初始化 O(n),每次检索 O(1);
-
空间复杂度:O(n),其中 n 是数组 nums 的长度;
代码实现:
var NumArray = function (nums) {
const n = nums.length;
// 前缀和
this.prefixSums = new Array(n + 1).fill(0);
for (let i = 0; i < n; i++) {
this.prefixSums[i + 1] = this.prefixSums[i] + nums[i];
}
};
NumArray.prototype.sumRange = function (left, right) {
return this.prefixSums[right + 1] - this.prefixSums[left]
};
99.恢复二叉搜索树
上一篇