[DP]303——Range Sum Query - Immutable

Range Sum Query - Immutable

思路:
动态规划,每次计算和的时候用上一次计算的结果。时间复杂度为O(n)。不用的话时间复杂度为O(n2). Table 方便查询

比如nums长度是n 查询m次 就是O(nm)
但是存一个NumArray[i],表示从0-i的sum和,那么查询sum[i,j]即为sum[0,j] - sum[0,i]

Runtime Error

class NumArray {
    int sum[];
    public NumArray(int[] nums) {
        int len = nums.length;
        sum = new int[len];
        sum[0] = nums[0];
        for (int i = 1; i< len; i++){
            sum[i] = sum[i-1] + nums[i];
        }
        
    }
    
    public int sumRange(int i, int j) {
        if(i < 0 || j >= sum.length || i >j )return 0;
        if(i == 0) return sum[j];
        else return sum[j]-sum[i-1];
        
    }
}

/**
 * Your NumArray object will be instantiated and called as such:
 * NumArray obj = new NumArray(nums);
 * int param_1 = obj.sumRange(i,j);
 */

看来查询nums也很占时间啊。。小小改动就accept了

class NumArray {
    int sum[];
    public NumArray(int[] nums) {
        int len = nums.length;
        sum = nums.clone();
        for (int i = 1; i< len; i++){
            sum[i] += sum[i-1];
        }
        
    }
    
    public int sumRange(int i, int j) {
        if(i < 0 || j >= sum.length || i >j )return 0;
        if(i == 0) return sum[j];
        else return sum[j]-sum[i-1];
        
    }
}

/**
 * Your NumArray object will be instantiated and called as such:
 * NumArray obj = new NumArray(nums);
 * int param_1 = obj.sumRange(i,j);
 */
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,354评论 0 33
  • 前言 Tkinter是一个Python2.7和Python3.x都内置的GUI模块, 使用较为简单, 对于制作一个...
    陈码工阅读 10,523评论 0 9
  • 2018年3月18日 农历二月二 周日 小雨 今天是二月二, 龙抬头。好日子哦。春季来临,万物复苏,人们心中的瑞祥...
    南飞雨燕阅读 5,382评论 79 105
  • 月茹,一个人坐在床边,泪如雨下,这是丈夫第9次出轨,这次应该是认真的。 不再像前8次一样,逢场作戏,还会安抚她的情...
    色妖妖阅读 2,642评论 0 0
  • 今天用个新的学习方式来和大家一起分享!大家好,欢迎来到好课,今天我和大家分享的这本书叫清单革命,我听这本书听了不止...
    春天达人阅读 3,369评论 0 1

友情链接更多精彩内容