Leetcode刷题java之303. 区域和检索 - 数组不可变

执行结果:

通过

显示详情

执行用时 :111 ms, 在所有 Java 提交中击败了81.85%的用户

内存消耗 :46.3 MB, 在所有 Java 提交中击败了59.02%的用户

题目:

给定一个整数数组  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 方法。

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

思路:

当然这个有一种暴力解法,那就是每一次查询都计算一次,那么计算量将会特别的大。

所以,我们需要换一种思路,比如采用缓存的思想,可以构建一个和的数组,第一个位置就是前一项和,第二个位置就是前二项和,依次类推,那么我们求i到j的和,只需要让对应位置的和相减就可以了。

代码:

class NumArray {

    private int[] sums;
    public NumArray(int[] nums) {
        sums=new int[nums.length+1];
        for(int i=0;i

 

你可能感兴趣的:(Leecode,动态规划,java)