303. 区域和检索 - 数组不可变
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。
示例:
给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()
sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3
说明:
你可以假设数组不可变。
会多次调用 sumRange 方法。
https://leetcode-cn.com/problems/range-sum-query-immutable/
解法
type NumArray struct {Value []int
}func Constructor(nums []int) NumArray {arr := NumArray{[]int{0}} // 浪费第一个空间// 1, 2, 3, 4, 5for i, v := range nums {// 1, 3, 6, 10, 15arr.Value = append(arr.Value, v + arr.Value[i])}return arr
}func (this *NumArray) SumRange(i int, j int) int {// i = 0; j = 3 // [3+1] - [0] = 15 - 1 = 14 = 1 + 2 + 3 + 4 return this.Value[j+1] - this.Value[i]
}