diff options
| author | Steve Lee <me@xiangyangli.com> | 2018-01-13 05:13:14 +0800 |
|---|---|---|
| committer | Steve Lee <me@xiangyangli.com> | 2018-01-13 05:13:14 +0800 |
| commit | a46ec300092c1ee8ccac629b7f335643f87662f5 (patch) | |
| tree | b03e20d905e6f583df626386164daf4aa5f81519 /Computer_Science/leetcode/73-set_matrix_zeros.c | |
| parent | 79a9c52fa923fc78074d88463449a8b7f95ca3ef (diff) | |
| download | 42-a46ec300092c1ee8ccac629b7f335643f87662f5.tar.xz 42-a46ec300092c1ee8ccac629b7f335643f87662f5.zip | |
update
Diffstat (limited to 'Computer_Science/leetcode/73-set_matrix_zeros.c')
| -rw-r--r-- | Computer_Science/leetcode/73-set_matrix_zeros.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Computer_Science/leetcode/73-set_matrix_zeros.c b/Computer_Science/leetcode/73-set_matrix_zeros.c new file mode 100644 index 0000000..31d530f --- /dev/null +++ b/Computer_Science/leetcode/73-set_matrix_zeros.c @@ -0,0 +1,46 @@ +void helper(int** matrix, int rowOffset, int colOffset, int rowSize, int colSize, int maxRowSize, int maxColSize) +{ + if(rowOffset >= maxRowSize || colOffset >= maxColSize + || rowOffset < 0 || colOffset < 0 + || rowSize <= 0 || colSize <= 0) + return; + for(int i = 0; i < rowSize; i++) + for(int j = 0; j < colSize; j++) + if(matrix[rowOffset + i][colOffset + j] == 0) { + for(int m = 0; m < colSize; m++) + matrix[rowOffset + i][colOffset + m] = 0; + for(int m = 0; m < rowSize; m++) + matrix[rowOffset + m][colOffset + j] = 0; + //left + helper(matrix, rowOffset + 1, colOffset, rowSize - 1 - i, j, maxRowSize, maxColSize); + //right + helper(matrix, rowOffset + 1, colOffset + j + 1, rowSize - 1 - i, colSize - 1 - j, maxRowSize, maxColSize); + return; + } +} +void setZeroes(int** matrix, int matrixRowSize, int matrixColSize) { + helper(matrix, 0, 0, matrixRowSize, matrixColSize, matrixRowSize, matrixColSize); +} + + +//Flag version need to be improved + + +void setZeroes(int** matrix, int matrixRowSize, int matrixColSize) { + int flag = INT_MIN; + + for(int i = 0; i < matrixRowSize; i++) + for(int j = 0; j < matrixColSize; j++) { + if(matrix[i][j] == 0) { + for(int m = 0; m < matrixRowSize; m++) + matrix[m][j] = matrix[m][j] == 0 ? 0 : flag; + for(int m = 0; m < matrixColSize; m++) + matrix[i][m] = matrix[i][m] == 0 ? 0 : flag; + } + } + + for(int i = 0; i < matrixRowSize; i++) + for(int j = 0; j < matrixColSize; j++) { + if(matrix[i][j] == flag) matrix[i][j] = 0; + } +} |
