[LeetCode]--303. Range Sum Query - Immutable

    xiaoxiao2026-10-02  1

    Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.

    Example: Given nums = [-2, 0, 3, -5, 2, -1]

    sumRange(0, 2) -> 1 sumRange(2, 5) -> -1 sumRange(0, 5) -> -3

    Note: You may assume that the array does not change. There are many calls to sumRange function.

    我最开始用的就是把数组的元素相加,因为知道i,j嘛,可以依次相加,但是这样就会超时。

    如果最开始在构造函数里面构造数组的时候就把和都存进去,这样既可。

    public class NumArray { public int[] nums; public NumArray(int[] nums) { if (nums.length == 0) return; this.nums = new int[nums.length]; Arrays.fill(this.nums, 0); this.nums[0] = nums[0]; for (int i = 1; i < nums.length; i++) { this.nums[i] = this.nums[i - 1] + nums[i]; } } public int sumRange(int i, int j) { if (this.nums.length == 0) return 0; if (j > this.nums.length - 1) j = this.nums.length - 1; if (i == 0) return this.nums[j]; return this.nums[j] - this.nums[i - 1]; } }
    最新回复(0)