【一天一道LeetCode】#73. Set Matrix Zeroes

原创 2016年05月31日 17:18:25

一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处

(一)题目

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

(二)解题

题目大意:给定一个M*N的数组,如果(i,j)为0,则将第i行第j列全部元素置为0。
这道题目意思很简单,如果考虑到用辅助空间来计算就超级简单了,本题不允许用辅助空间!
那么,我们换个思路,利用矩阵自身来存储需要修改的信息。
这里我们考虑将需要修改的行列信息存储在第0行和第0列。具体见代码:

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        int row = matrix.size();
        if(row==0) return;
        int col = matrix[0].size();
        int R0flag = false;//记录第0行是否存在0
        int C0flag = false;//记录第0列是否存在0
        for(int i = 0 ; i< row ; i++)
        {
            if(matrix[i][0]==0) {C0flag=true;break;}//扫描第0列
        }
        for(int i = 0 ; i< col ; i++)
        {
            if(matrix[0][i]==0) {R0flag=true;break;}//扫描第0行
        }
        //扫描整个数组,用matrix[i][0]保存需要修改的列, matrix[0][j]保存需要修改的行
        for(int i = 0 ; i < row ;i++)
        {
            for(int j = 0 ; j < col ; j++)
            {
                if(matrix[i][j] == 0)
                {
                    matrix[i][0] = 0;
                    matrix[0][j] = 0;
                }
            }
        }
        //修改1~col-1列
        for(int i = 1 ; i< row ; i++)
        {
            if(matrix[i][0]==0){
                for(int j = 0 ; j< col ; j++)
                {
                    matrix[i][j]=0;
                }
            }
        }
        //修改1~row-1行
        for(int i = 1 ; i< col ; i++)
        {
            if(matrix[0][i]==0){
                for(int j = 0 ; j< row ; j++)
                {
                    matrix[j][i]=0;
                }
            }
        }
        //修改第0行和第0列
        if(R0flag){
            for(int i = 0 ; i < col ; i++) matrix[0][i] =0;
        }
        if(C0flag){
            for(int i = 0 ; i < row ; i++) matrix[i][0] =0;
        }
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

[Leetcode] 73. Set Matrix Zeroes 解题报告

题目: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in plac...

Leetcode 73. Set Matrix Zeroes 矩阵置零 解题报告

1 解题思想首先不好意思,最近实在太忙,昨天来不及更新,今天一起吧。这道题是说,在一个矩阵里,如果某一个位置是0,那么就要把他这一行,这一列也都置0.如果用两个矩阵来说,这是一个很简单的问题,但是这道...
  • MebiuW
  • MebiuW
  • 2016年05月17日 23:51
  • 482

[leetcode] 73.Set Matrix Zeroes

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

Leetcode 73. Set Matrix Zeroes & 289. Game of Life

73. Set Matrix Zeroes Total Accepted: 77299 Total Submissions: 224251 Difficulty: Medium G...

leetcode - 73. Set Matrix Zeroes

73. Set Matrix Zeroes Given a m x n matrix,if an element is 0, set its entire row and column to 0. ...
  • laeen
  • laeen
  • 2017年04月04日 11:56
  • 328

leetcode73~Set Matrix Zeroes

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

【LeetCode-73】Set Matrix Zeroes

这道题我完全理解错了,我开始以为有一个0,那不就整行整列都为0,接下来不就连锁反应,整个矩阵都为0了,费解了!后来才知道不是那么回事,看了别人了才明白,我这个语文能力真是有点差。 /** * 这道...

LeetCode-73. Set Matrix Zeroes

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

LeetCode 73 Set Matrix Zeroes(设矩阵元素为0)(Array)(*)

翻译给定一个mmxnn的矩阵matrix,如果其中一个元素为0,那么将其所在的行和列的元素统统设为0。要求就地计算。跟进:你使用了额外的空间吗?一个直接的解决方案是使用O(mn)O(mn)的空间,但这...
  • NoMasp
  • NoMasp
  • 2016年08月06日 23:07
  • 1344

leetcode73_ Set Matrix Zeroes

问题描述Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.代码编...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【一天一道LeetCode】#73. Set Matrix Zeroes
举报原因:
原因补充:

(最多只允许输入30个字)