[LeetCode] 73. Set Matrix Zeroes

[LeetCode] 73. Set Matrix Zeroes

题目

Given an m x n integer matrix matrix, if an element is 0, set its entire row and column to 0's, and return the matrix.

You must do it in place.

Example 1:

image

Input: matrix = [[1,1,1],[1,0,1],[1,1,1]]
Output: [[1,0,1],[0,0,0],[1,0,1]]

思路

可以开两个数组分别标记这一行/列是否有0。空间复杂度 O(n+m)

这两个数组可以用原矩阵的第一行第一列代替,但同时要判断第一行第一列原来是否有0。

其实可以只用一个变量来判断,待填坑。

代码

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();
        int flag_col0 = false;
        for (int i = 0; i < m; i++) {
            if (!matrix[i][0]) {
                flag_col0 = true;
            }
            for (int j = 1; j < n; j++) {
                if (!matrix[i][j]) {
                    matrix[i][0] = matrix[0][j] = 0;
                }
            }
        }
        for (int i = m-1; i >= 0; i--) {
            for (int j = 1; j < n; j++) {
                if (!matrix[i][0] || !matrix[0][j]) {
                    matrix[i][j] = 0;
                }
            }
            if (flag_col0) matrix[i][0] = 0;
        }

    }
};
欢迎转载,转载请注明出处!
原文地址:https://www.cnblogs.com/huihao/p/15435251.html