JavaScript|LeetCode|动态规划|303.区域和检索-数组不可变

法1:动态规划
看了题解
想法:

  1. 索引 i 到 j 的元素和(含 i、j)= (索引 0 到 j 的元素和)-(索引 0 到 i - 1 的元素和)
  2. 用一个数组sum保存索引 0 到 j 的元素和(j = 0, 1, 2, ……, n - 1)
  3. 若 i == 0,则直接返回sum[ j ]
/** 
* @param {number[]} nums 
*/
var NumArray = function(nums) {    
    this.constr = function(nums) {        
        var i = 0, sum = [];        
        sum[0] = nums[0];        
        for(i = 1; i < nums.length; i++) {            
            sum[i] = nums[i] + sum[i - 1]; // [0, i]         
        }        
        return sum;    
    };    
    this.nums = nums;    
    this.sum = this.constr(this.nums); // 每个对象都有该属性
};

// 也可这样添加构造sum的方法
// NumArray.prototype.constr = function(nums) {
//     var i = 0, sum = [];
//     sum[0] = nums[0];
//     for(i = 1; i < nums.length; i++) {
//         sum[i] = nums[i] + sum[i - 1]; // [0, i] 
//     }
//     return sum;
// }
/**  
* @param {number} i  
* @param {number} j 
* @return {number} 
*/
NumArray.prototype.sumRange = function(i, j) {    
    if(i == 0) {        
        return this.sum[j];    
    }    
    else {        
        return this.sum[j] - this.sum[i - 1];    
    }
};
/** 
* Your NumArray object will be instantiated and called as such: 
* var obj = new NumArray(nums) 
* var param_1 = obj.sumRange(i,j) 
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值