303.区域和检索-数组不可变
链接:303.区域和检索-数组不可变
难度:Easy
标签:设计、数组、前缀和
简介:给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。
题解 1 - python
- 编辑时间:2024-03-18
- 执行用时:50ms
- 内存消耗:20.48MB
- 编程语言:python
- 解法介绍:前缀和。
class NumArray:
    def __init__(self, nums: List[int]):
        self.sums = [0]
        for num in nums:
            self.sums.append(self.sums[-1] + num)
    def sumRange(self, left: int, right: int) -> int:
        return self.sums[right + 1] - self.sums[left]
题解 2 - typescript
- 编辑时间:2021-03-01
- 执行用时:120ms
- 内存消耗:45.6MB
- 编程语言:typescript
- 解法介绍:利用前缀和进行快速计算。
class NumArray {
  private sums: number[] = [];
  constructor(private nums: number[]) {
    let sum = 0;
    for (let i = 0, l = nums.length; i < l; i++) {
      this.sums[i] = sum += nums[i];
    }
  }
  sumRange(i: number, j: number): number {
    return this.sums[j] - this.sums[i] + this.nums[i];
  }
}
题解 3 - typescript
- 编辑时间:2021-03-01
- 执行用时:224ms
- 内存消耗:44.7MB
- 编程语言:typescript
- 解法介绍:for 循环计算。
class NumArray {
  constructor(private nums: number[]) {}
  sumRange(i: number, j: number): number {
    let sum = 0;
    for (let index = i; index <= j; index++) sum += this.nums[index];
    return sum;
  }
}