/**
* @constructor
* @param {number[][]} matrix
*/
var NumMatrix = function(matrix) {
var myMatriRow = [];
matrix.forEach(function(array){
var rowArray = [];
array.forEach(function(item,index){
if(index===0){
rowArray.push(item);
}else{
tmp = item + rowArray[index-1];
rowArray.push(tmp);
}
});
myMatriRow.push(rowArray);
});
this.arraydata = myMatriRow;
};
/**
* @param {number} row1
* @param {number} col1
* @param {number} row2
* @param {number} col2
* @return {number}
*/
NumMatrix.prototype.sumRegion = function(row1, col1, row2, col2) {
var dataArray = this.arraydata;
var sum = 0;
for(var i=row1;i<=row2;i++){
if(col1===0){
tmpNum = dataArray[i][col2];
}else{
tmpNum = dataArray[i][col2] - dataArray[i][col1-1];
}
sum += tmpNum;
}
return sum;
};
/**
* Your NumMatrix object will be instantiated and called as such:
* var numMatrix = new NumMatrix(matrix);
* numMatrix.sumRegion(0, 1, 2, 3);
* numMatrix.sumRegion(1, 2, 3, 4);
*/
注意,由于后续的访问都是以sumRegion(0, 1, 2, 3)形式来获取结果的,所以,复杂的代码处理应该放在NumMatrix函数中,将数据格式整理好后,每次调用sumRegion函数就仅需要简单的数据处理了,可以大大提高代码效率。