zoukankan      html  css  js  c++  java
  • 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.

    click to show follow up.

    Follow up:

    Did you use extra space?
    A straight forward solution using O(mn) space is probably a bad idea.
    A simple improvement uses O(m + n) space, but still not the best solution.
    Could you devise a constant space solution?

    体比较常见,但是如何用最少的内存呢?
    记录出现0的位置要用0个数个空间,不是常数。
    在0排和0列记录哪排哪列需要置零。这两行需要在修改之前判断是否需要置零,只需2个额外空间。
    class Solution {
    public:
        void setZeroes(vector<vector<int> > &matrix) {
            int flag1 = 0;
            int flag0 = 0;
            
            for(int i = 0 ; i < matrix.size();i++)
            if(matrix[i][0] == 0)flag1 = 1;
            
            for(int i = 0 ; i < matrix[0].size();i++)
            if(matrix[0][i] == 0)flag0 = 1;
            
            for(int i = 1 ; i < matrix.size();i++)
            for(int j = 1 ; j < matrix[0].size();j++)
            {
                if(matrix[i][j] == 0)
                {
                    matrix[0][j] = 0;
                    matrix[i][0] = 0;
                }
            }
            
            for(int i = 1 ; i < matrix.size();i++)
            {
                if(matrix[i][0] == 0)
                for(int j = 1 ; j < matrix[i].size();j++)matrix[i][j]=0;
            }
            for(int i = 1 ; i < matrix[0].size();i++)
            {
                if(matrix[0][i] == 0)
                for(int j = 1 ; j < matrix.size();j++)matrix[j][i]=0;
            }
            if(flag1 == 1)for(int i = 0 ; i < matrix.size();i++)matrix[i][0] = 0;
            if(flag0 == 1)for(int i = 0 ; i < matrix[0].size();i++)matrix[0][i] = 0;
            
        }
    };
    

      

  • 相关阅读:
    论企业家的修养七“善”(转)
    2009中国企业家新春联谊会
    独步红尘
    诗人的悲哀
    我们恋爱吧
    为妈妈祈福
    向总统学习形像包装!【强烈推荐】
    为了你,我开始学着写诗
    亲爱的,我们去私奔吧
    要做最好的自己:“优化”大脑的22条有效方法
  • 原文地址:https://www.cnblogs.com/pengyu2003/p/3596314.html
Copyright © 2011-2022 走看看