LeetCode—73. Set Matrix Zeroes

Type:medium

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place.

Example 1:

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


给定一个矩阵,若某个值为0,则将该值所在的横排、竖列所有值均赋为0。

本题要求空间复杂度尽量小,因此不考虑再建一个矩阵的问题。建两个大小分别为矩阵行数、列数的数组,用来保存每一行、每一列是否有0值,若有,则该行、该列所有值赋为0。



void setZeroes(vector<vector<int>>& matrix) {

        if(matrix.empty() || matrix[0].empty()) return;

        int m = matrix.size();

        int n = matrix[0].size();

        vector<int> row(m, 1);

        vector<int> col(n, 1);

        for(int i=0; i<m; i++){

            for(int j=0; j<n; j++){

                if(matrix[i][j] == 0){

                    row[i] = 0;

                    col[j] = 0;

                }

            }

        }

        for(int i=0; i<m; i++){

            if(row[i] == 0){

                for(int j=0; j<n; j++) matrix[i][j] = 0;

            }

        }

        for(int i=0; i<n; i++){

            if(col[i] == 0){

                for(int j=0; j<m; j++) matrix[j][i] = 0;

            }

        }

        return;

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容