没怎么看懂。。看答案改写了一个
class NumMatrix {
var sums : [[Int]]
init(_ matrix: [[Int]]) {
sums = Array<[Int]>()
//非空处理
if matrix.isEmpty || matrix.count == 0 || matrix[0].count == 0 {
return
}
let m = matrix.count
if m > 0 {
let n = matrix[0].count
//多加了一列0 是为了方便计算每一行的子数组和
let array = Array<Int>(repeating: 0, count: n + 1)
sums = Array<[Int]>(repeating: array, count: m)
for i in 0..<m {
for j in 0..<n {
sums[i][j + 1] = sums[i][j] + matrix[i][j]
}
}
}
}
func sumRegion(_ row1: Int, _ col1: Int, _ row2: Int, _ col2: Int) -> Int {
var sum = 0
for i in row1...row2 {
sum += sums[i][col2 + 1] - sums[i][col1]
}
return sum
}
}











网友评论