zoukankan      html  css  js  c++  java
  • 【中级算法】2.矩阵置零

    题目:

    给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 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]
    ]
    进阶:
    
    一个直接的解决方案是使用  O(mn) 的额外空间,但这并不是一个好的解决方案。
    一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
    你能想出一个常数空间的解决方案吗?

    解题思路:

    0(M+n)的额外空间算法比较容易实现,实现代码如下:

    class Solution {
    public:
        void setZeroes(vector<vector<int>>& matrix) {
            int row = matrix.size();
            int colum = matrix[0].size();
            vector<bool> zero_row(row,false);
            vector<bool> zero_colum(colum,false);
            
            for(int i = 0; i < row; ++i){
                for(int j = 0;j < colum; ++j){
                    if(matrix[i][j] == 0){
                        zero_row[i] = true;
                        zero_colum[j] = true;
                    }
                }
            }
            
            for(int i = 0; i < row; ++i){
                for(int j = 0;j < colum; ++j){
                    if(zero_row[i]||zero_colum[j]){
                        matrix[i][j] = 0;
                    }
                }
            }
        }
    };
  • 相关阅读:
    rpc rmi http
    理解Global interpreter lock
    maven scope含义的说明
    实现图片缩放
    实现在edittext中任意插入图片
    上传图片或文件到服务器端
    onResume
    关于Context
    android bitmap compress
    saveFile()方法
  • 原文地址:https://www.cnblogs.com/mikemeng/p/9020582.html
Copyright © 2011-2022 走看看