zoukankan      html  css  js  c++  java
  • Set Matrix Zeroes

          还是把矩阵中值为0的点的行列都置零,上次是开辟了额外空间,这次要求O(1)的空间复杂度。

    void setZeroes(vector<vector<int> > &matrix) 
    {
        bool bColZero = false, bRowZero = false;
        
        if (matrix.size() == 0 || matrix[0].size() == 0)
        {
            return;
        }
     
        // Mark bColZero true when col[0] contains zero.   
        for (size_t row = 0; row < matrix.size(); ++row)
        {
            if (!matrix[row][0]) bColZero = true;
        }
        
        // Mark bRowZero true when row[0] contains zero.
        for (size_t col = 0; col < matrix[0].size(); ++col)
        {
            if (!matrix[0][col]) bRowZero = true;
        }
        
        // Map zero points to row[0] and col[0].
        for (size_t row = 1; row < matrix.size(); ++row)
        {
            for (size_t col = 1; col < matrix[row].size(); ++col)
            {
                if (!matrix[row][col])
                {
                    matrix[0][col] = 0;
                    matrix[row][0] = 0;
                }
            }
        }
        
        // Set zero according to row[0] and col[0].
        for (size_t row = 1; row < matrix.size(); ++row)
        {
            for (size_t col = 1; col < matrix[row].size(); ++col)
            {
               if (!matrix[row][0] || !matrix[0][col])
               {
                   matrix[row][col] = 0;
               }
            }
        }
        
        // Process col[0].
        if (bColZero)
        {
            for (size_t row = 0; row < matrix.size(); ++row)
            {
                matrix[row][0] = 0;
            }
        }
        
        // Process row[0].
        if (bRowZero)
        {
            for (size_t col = 0; col < matrix[0].size(); ++col)
            {
                matrix[0][col] = 0;
            }
        }
    }
  • 相关阅读:
    Less的嵌套规则
    作为函数的mixin
    带参数的Mixin
    Less的Mixin
    Less变量
    sticky-css
    javascript copy 复制到粘贴板的方法
    Storage支持率记录
    cookie session 做登录认证
    vue2.x 微信浏览器中遇到的奇难杂症
  • 原文地址:https://www.cnblogs.com/codingmylife/p/2714010.html
Copyright © 2011-2022 走看看