Skip to content

Commit 03cb40b

Browse files
authored
Create 0304-range-sum-query-2d-immutable.kt
1 parent c9ac2fd commit 03cb40b

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
class NumMatrix(matrix: Array<IntArray>) {
2+
3+
val row = matrix.size
4+
val col = matrix[0].size
5+
val prefixSum = Array(row + 1){ IntArray(col + 1) }
6+
7+
init {
8+
for(i in 0 until row) {
9+
var prefix = 0
10+
for(j in 0 until col) {
11+
println("i: $i j: $j")
12+
prefix += matrix[i][j]
13+
prefixSum[i + 1][j + 1] = prefix + prefixSum[i][j + 1]
14+
}
15+
}
16+
}
17+
18+
19+
fun sumRegion(row1: Int, col1: Int, row2: Int, col2: Int): Int {
20+
val r1 = row1 + 1
21+
val r2 = row2 + 1
22+
val c1 = col1 + 1
23+
val c2 = col2 + 1
24+
25+
val botRight = prefixSum[r2][c2]
26+
val aboveOf = prefixSum[r1 - 1][c2]
27+
val leftOf = prefixSum[r2][c1 - 1]
28+
val topLeft = prefixSum[r1 - 1][c1 - 1]
29+
30+
return botRight - aboveOf - leftOf + topLeft
31+
}
32+
33+
}
34+
35+
/**
36+
* Your NumMatrix object will be instantiated and called as such:
37+
* var obj = NumMatrix(matrix)
38+
* var param_1 = obj.sumRegion(row1,col1,row2,col2)
39+
*/

0 commit comments

Comments
 (0)