1
头图

区域和检索 - 数组不可变

题目描述:给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。

实现 NumArray 类:

  • NumArray(int[] nums) 使用数组 nums 初始化对象
  • int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))

示例说明请见LeetCode官网。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl...
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:累加
首先,给NumArray声明一个int数组型成员变量nums,在构造方法中初始化nums。sumRange这个方法的实现就是数组的left~right位置的元素值相加,然后返回。
package com.kaesar.leetcode;

public class LeetCode_303 {
    public static void main(String[] args) {
        // 测试用例
        NumArray numArray = new NumArray(new int[]{-2, 0, 3, -5, 2, -1});
        System.out.println(numArray.sumRange(0, 2)); // return 1 ((-2) + 0 + 3)
        System.out.println(numArray.sumRange(2, 5)); // return -1 (3 + (-5) + 2 + (-1))
        System.out.println(numArray.sumRange(0, 5)); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))
    }
}

class NumArray {

    private int[] nums;

    public NumArray(int[] nums) {
        this.nums = nums;
    }

    public int sumRange(int left, int right) {
        int result = 0;
        for (int i = left; i <= right; i++) {
            result += nums[i];
        }
        return result;
    }
【每日寄语】 洗去夜的疲惫,刷走昨日劳累,在晨曦中抖擞精神,在阳光下放飞心情,把未知的事面对,勇敢无畏;让快乐的心相随,轻松明媚。

醉舞经阁
1.8k 声望7.1k 粉丝

玉树临风,仙姿佚貌!