美文网首页
剑指 Offer II 013. 二维子矩阵的和

剑指 Offer II 013. 二维子矩阵的和

作者: 邦_ | 来源:发表于2022-04-13 09:05 被阅读0次

没怎么看懂。。看答案改写了一个

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

    }
}




相关文章

网友评论

      本文标题:剑指 Offer II 013. 二维子矩阵的和

      本文链接:https://www.haomeiwen.com/subject/fhsysrtx.html