【leetcode】304. 二维区域和检索 - 矩阵不可变

 

typedef struct {
    int dp[200][200];
} NumMatrix;
NumMatrix* numMatrixCreate(int** matrix, int matrixSize, int* matrixColSize) {
    NumMatrix* obj = (NumMatrix*)calloc(1, sizeof(NumMatrix));
    for (int i = 0; i < matrixSize; i++)
        for (int j = 0; j < *matrixColSize; j++)
            obj->dp[i + 1][j + 1] = matrix[i][j] + obj->dp[i + 1][j] + obj->dp[i][j + 1] - obj->dp[i][j];
    return obj;
}

int numMatrixSumRegion(NumMatrix* obj, int row1, int col1, int row2, int col2) {
    return obj->dp[row2 + 1][col2 + 1] - obj->dp[row1][col2 + 1] - obj->dp[row2 + 1][col1] + obj->dp[row1][col1];
}

void numMatrixFree(NumMatrix* obj) {
    free(obj);
}

 

posted @ 2020-12-31 22:32  温暖了寂寞  阅读(55)  评论(0编辑  收藏  举报