leetcode_073 Set Matrix Zeros

来源:互联网 发布:药店时空软件官网 编辑:程序博客网 时间:2024/06/06 00:46

题目分析:对于一个给定的矩阵,如果它其中的某个元素为0,则将该元素所在行和列的值均变为0。

解题思路: 

                        1)创建一个两个数组,分别用于记录矩阵中的行和列是否需要变为0的标志;

                        2)遍历矩阵,标记矩阵中哪些行和哪些列元素需要变为0;

                        3)遍历矩阵,根据矩阵中对应行列是否为0标志来更改矩阵中的元素即可。

class Solution{public:void setZeros(vector< vector<int> > &matrix){// 获取矩阵的行数 int row = matrix.size();if (row < 1)return ;// 获取矩阵的列数 int col = matrix[0].size();// 定义存放行列是否变0标志数组 vector<bool> colRecorder(col, false);vector<bool> rowRecorder(row, false);// 遍历矩阵,标志哪些行和哪些列需要变为0 for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){if (matrix[i][j] == 0){rowRecorder[i] = true;colRecorder[j] = true;}}}// 遍历矩阵,根据行列是否为0标志对矩阵中的数据进行更改 for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){if (rowRecorder[i])matrix[i][j] = 0;else if (colRecorder[j])matrix[i][j] = 0;}}}};






0 0