303. 区域和检索 - 数组不可变

解题思路:

开始没看懂题目,想着不是一个循环的事情吗,但是看网上许多人提醒说是多次调用方法sumRange,意思是给你一个nums[100],然后给你多组i j 比如求和1--100的 1--50的 2---10 50--60的
我算是取巧了 毕竟是动态规划的题目 就直接用一个数组a[nums.length]存起了0--j的和
那就简单了 然后i--j的和不就是 a[j]-a[i-1]嘛
a[j]是0到j a[i]是0到i a[j]-a[i-1]就是i到j

源代码:

class NumArray {
    int sum=0;
    int[] a;//这个数组存的是a[i]前的和
    public NumArray(int[] nums) {
        
        a=new int[nums.length];
        for (int i=0;i<a.length;i++){
            sum+=nums[i];
            a[i]=sum;
        }

    }
    
    public int sumRange(int i, int j) {
            if (i==0){
                return a[j];
            }
            else{
                return a[j]-a[i-1];
            }
    }
}

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值