LeetCode303. 区域和检索 - 数组不可变
Posted 不学无墅_NKer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode303. 区域和检索 - 数组不可变相关的知识,希望对你有一定的参考价值。
题目描述:
分析:虽然是求区间和,但数组是不可变的,不可变 意思是 不涉及线段树更新操作。因此可以不使用线段树这种复杂的数据结构,对于该题不使用线段树效果更好,初始化是O(n)的复杂度,以后每次调用只需要O(1)的复杂度。
// 不使用线段树的解决方案 class NumArray { private int[] sum; // sum[i]存储前i个元素和, sum[0] = 0 public NumArray(int[] nums) { sum = new int[nums.length + 1]; // sum[i]存储nums[0....i-1]的和 sum[0] = 0; for(int i = 1; i <sum.length; i++){ sum[i] = sum[i - 1] + nums[i - 1]; } } public int sumRange(int i, int j) { return sum[j + 1] - sum[i]; // 0到j的和 减去 0到i-1的和,剩下的就是i到j的和 } } /** * Your NumArray object will be instantiated and called as such: * NumArray obj = new NumArray(nums); * int param_1 = obj.sumRange(i,j); */
对比题目:LeetCode307. 区域和检索 - 数组可修改
以上是关于LeetCode303. 区域和检索 - 数组不可变的主要内容,如果未能解决你的问题,请参考以下文章