当前位置: 移动技术网 > IT编程>开发语言>Java > 力扣刷题8---零矩阵

力扣刷题8---零矩阵

2020年07月16日  | 移动技术网IT编程  | 我要评论

题目

编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。

力扣出处面试金典

示例 1

输入:
[
  [1,1,1],
  [1,0,1],
  [1,1,1]
]
输出:
[
  [1,0,1],
  [0,0,0],
  [1,0,1]
]
示例 2

输入:
[
  [0,1,2,0],
  [3,4,5,2],
  [1,3,1,5]
]
输出:
[
  [0,0,0,0],
  [0,4,5,0],
  [0,3,1,0]
]

解析

个人的想法是遍历矩阵中的每一个元素,如果遇到0的时候只要将所在元素的这一行这一列分别置为0即可,但是需要注意不能基于原矩阵进行修改,不然的话会修改错误,因为这样的话0的数量会增加。

代码

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        int r = matrix.size();
        int c = matrix[0].size();
        vector<vector<int>> Newmatrix = matrix;  
        //不能基于原矩阵进行修改,不然的话会修改错误,因为这样的话0的数量会增加

        for(int i = 0; i < r; i++)
            for(int j = 0; j < c; j++)
            {
                if(matrix[i][j] == 0)
                {
                    for(int m = 0; m < r; ++m)
                    {
                        Newmatrix[m][j] =0;
                    }
                    for(int n=0; n < c; ++n)
                    {
                        Newmatrix[i][n] = 0;
                    }
                }
            }
        matrix = Newmatrix;
    }
};

在这里插入图片描述

本文地址:https://blog.csdn.net/weixin_44378800/article/details/107349152

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网