合肥建网站的公司,网站建设行业 前景,龙华建设局网站,python 网页制作教程这是数组的第10篇算法#xff0c;力扣链接。 给定一个整数数组 nums#xff0c;处理以下类型的多个查询: 计算索引 left 和 right #xff08;包含 left 和 right#xff09;之间的 nums 元素的 和 #xff0c;其中 left right 实现 NumArray 类#xff1a; NumArr…这是数组的第10篇算法力扣链接。 给定一个整数数组 nums处理以下类型的多个查询: 计算索引 left 和 right 包含 left 和 right之间的 nums 元素的 和 其中 left right 实现 NumArray 类 NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 包含 left 和 right 两点也就是 nums[left] nums[left 1] ... nums[right] ) 示例 1 输入
[NumArray, sumRange, sumRange, sumRange]
[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
输出
[null, 1, -1, -3]解释
NumArray numArray new NumArray([-2, 0, 3, -5, 2, -1]);
numArray.sumRange(0, 2); // return 1 ((-2) 0 3)
numArray.sumRange(2, 5); // return -1 (3 (-5) 2 (-1))
numArray.sumRange(0, 5); // return -3 ((-2) 0 3 (-5) 2 (-1)) 这道题是一个非常简单的设计题在不更改原数组的前提下我们可以构建一个前n项和的数组所谓left到right区间和我们可以转换问题为sum[right1]-sum[left].
type NumArray struct {sum []int
}func Constructor(nums []int) NumArray {sum : make([]int, len(nums)1)for i, num : range nums {sum[i1] sum[i] num}return NumArray{sum: sum,}
}func (this *NumArray) SumRange(left int, right int) int {return this.sum[right1] - this.sum[left]
}