Skip to content

Commit 97871ed

Browse files
authored
Create 1314-matrix-block-sum.js
1 parent f0fe6e5 commit 97871ed

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

1314-matrix-block-sum.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @param {number[][]} mat
3+
* @param {number} k
4+
* @return {number[][]}
5+
*/
6+
const matrixBlockSum = function(mat, k) {
7+
const m = mat.length, n = mat[0].length
8+
const rangeSum = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0))
9+
10+
for(let i = 0; i < m; i++) {
11+
for(let j = 0; j < n; j++) {
12+
rangeSum[i + 1][j + 1] = rangeSum[i + 1][j] + rangeSum[i][j + 1] - rangeSum[i][j] + mat[i][j]
13+
}
14+
}
15+
const res = Array.from({ length: m }, () => Array(n).fill(0))
16+
for(let i = 0; i < m; i++) {
17+
for(let j = 0; j < n; j++) {
18+
let r1 = Math.max(0, i - k), c1 = Math.max(0, j - k)
19+
let r2 = Math.min(m, i + k + 1), c2 = Math.min(n, j + k + 1)
20+
res[i][j] = rangeSum[r2][c2] - rangeSum[r2][c1] - rangeSum[r1][c2] + rangeSum[r1][c1]
21+
}
22+
}
23+
24+
return res
25+
};

0 commit comments

Comments
 (0)