Skip to content

Commit 07d3cf9

Browse files
authored
Update 304-range-sum-query-2d-immutable.js
1 parent 77fabe3 commit 07d3cf9

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

304-range-sum-query-2d-immutable.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,37 @@ NumMatrix.prototype.sumRegion = function(row1, col1, row2, col2) {
4040
* var obj = Object.create(NumMatrix).createNew(matrix)
4141
* var param_1 = obj.sumRegion(row1,col1,row2,col2)
4242
*/
43+
44+
// another
45+
46+
/**
47+
* @param {number[][]} matrix
48+
*/
49+
const NumMatrix = function(matrix) {
50+
const m = matrix.length, n = matrix[0].length
51+
const dp = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0))
52+
for(let i = 1; i <= m; i++) {
53+
for(let j = 1; j <= n; j++) {
54+
dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] + matrix[i - 1][j - 1]
55+
}
56+
}
57+
this.dp = dp
58+
};
59+
60+
/**
61+
* @param {number} row1
62+
* @param {number} col1
63+
* @param {number} row2
64+
* @param {number} col2
65+
* @return {number}
66+
*/
67+
NumMatrix.prototype.sumRegion = function(row1, col1, row2, col2) {
68+
const dp = this.dp
69+
return dp[row2 + 1][col2 + 1] - dp[row2 + 1][col1] - dp[row1][col2 + 1] + dp[row1][col1]
70+
};
71+
72+
/**
73+
* Your NumMatrix object will be instantiated and called as such:
74+
* var obj = new NumMatrix(matrix)
75+
* var param_1 = obj.sumRegion(row1,col1,row2,col2)
76+
*/

0 commit comments

Comments
 (0)