[力扣] 算法 304 (C#)

304. 二维区域和检索 – 矩阵不可变

public class NumMatrix
{
    readonly int[,] arr;
    public NumMatrix(int[][] matrix)
    {
        var rows = matrix?.Length ?? 0;
        var cols = rows == 0 ? 0 : (matrix.First()?.Length ?? 0);
        arr = new int[rows + 1, cols + 1];
        for (var i = 0; i < rows; i++)
            for (var j = 0; j < cols; j++)
                arr[i + 1, j + 1] = matrix[i][j] + arr[i, j + 1] + arr[i + 1, j] - arr[i, j];
    }
    public int SumRegion(int row1, int col1, int row2, int col2)
    {
        row1++; col1++;
        row2++; col2++;
        return arr[row2, col2] - arr[row1 - 1, col2] - arr[row2, col1 - 1] + arr[row1 - 1, col1 - 1];
    }
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据