zoukankan      html  css  js  c++  java
  • [LeetCode]Set Matrix Zeroes

    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.

    空间复杂度O(1),不能使用额外的空间,那得多重复几次。

    1. 判断第一行和第一列是否有0,用于最后对第一行和第一列赋值;
    2. 将除掉第一行和第一列的[m-1,n-1]映射到第一行和第一列保存,如果matrix[i][j]=0那么matrix[0][j]=0,matrix[i][0]=0;
    3. 将第一行和第一列赋值。
     1 class Solution {
     2 public:
     3     void setZeroes(vector<vector<int>>& matrix) {
     4         if(matrix.size()==0 || matrix[0].size()==0) return;
     5         int m=matrix.size(),n=matrix[0].size();
     6         bool firstRowZero=false,firstColZero=false;
     7         for(int i=0;i<m;i++)
     8         {
     9             if(matrix[i][0]==0)
    10             {
    11                 firstColZero = true;
    12                 break;
    13             }
    14         }
    15         for(int j=0;j<n;j++)
    16         {
    17             if(matrix[0][j]==0)
    18             {
    19                 firstRowZero = true;
    20                 break;
    21             }
    22         }
    23         for(int i=1;i<m;i++)
    24         {
    25             for(int j=1;j<n;j++)
    26             {
    27                 if(matrix[i][j]==0)
    28                 {
    29                     matrix[0][j]=0;
    30                     matrix[i][0]=0; 
    31                 }
    32             }
    33         }
    34         for(int i=1;i<m;i++)
    35         {
    36             for(int j=1;j<n;j++)
    37             {
    38                 if(matrix[0][j]==0 || matrix[i][0]==0)
    39                 {
    40                     matrix[i][j]=0;
    41                 }
    42             }
    43         }
    44         if(firstRowZero)
    45         {
    46             for(int j=0;j<n;j++) matrix[0][j]=0;
    47         }
    48         if(firstColZero)
    49         {
    50             for(int i=0;i<m;i++) matrix[i][0]=0;
    51         }
    52     }
    53 };
  • 相关阅读:
    javascript关于继承
    javascript组合继承
    javascript创建对象的几种模式
    Angularjs学习笔记6_table1
    Angularjs学习笔记5_form1
    Angularjs学习笔记3_datepicker
    Angularjs学习笔记2_添加删除DOM元素
    Angularjs学习笔记5_scope和$rootScope
    Angularjs学习笔记1_基本技巧
    RabbitMQ基础概念
  • 原文地址:https://www.cnblogs.com/Sean-le/p/4797273.html
Copyright © 2011-2022 走看看