程式語言 - LeetCode - C - 3643. Flip Square Submatrix Vertically



參考資訊:
https://algo.monster/liteproblems/3643

題目:


解答:

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int** reverseSubmatrix(int** grid, int gridSize, int* gridColSize, int x, int y, int k, int* returnSize, int** returnColumnSizes) {
    int i = 0;
    int j = 0;

    *returnSize = gridSize;
    *returnColumnSizes = calloc(gridSize, sizeof(int));
    for (i = 0; i < gridSize; i++) {
        (*returnColumnSizes)[i] = gridColSize[i];
    }

    for (i = x; i < (x + (k >> 1)); i++) {
        for (j = y; j < (y + k); j++) {
            int m = (x + k) - 1 - (i - x);

            grid[i][j] = grid[i][j] ^ grid[m][j];
            grid[m][j] = grid[i][j] ^ grid[m][j];
            grid[i][j] = grid[i][j] ^ grid[m][j];
        }
    }

    return grid;
}