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

    这道题和之前的Game of Live有些不一样,区别在于,之前那道题目只有两种状态,即矩阵只有0和1两种,并且只和与它相临的八个点发生关系。而这道题矩阵里面的数字是随机的,因此不可以用位操作来做了。看了discussion,可以将矩阵某点为0的点的行列的起点都设为0,这个时候就只要处理行为0,列为0还有特殊点(0,0)的情况就行了,行为0也可以这么设置,而列为0的时候需要设一个变量来表示该列是否需要全为0.本题关键在于遍历的顺序,设置为0的时候可以用正常顺序,而行列赋值为0的时候就需要从后往前了,因为这样一次遍历就可以全部遍历到,而如果是正常顺序就是还要考虑列为0的情况,列为0的情况必须最后考虑,代码如下:

     1 public class Solution {
     2     public void setZeroes(int[][] matrix) {
     3         int col0 = 1;
     4         int m = matrix.length;
     5         int n =matrix[0].length;
     6         for(int i=0;i<m;i++){
     7             if(matrix[i][0]==0) col0 = 0;
     8             for(int j=1;j<n;j++){
     9                 if(matrix[i][j]==0){
    10                     matrix[i][0] = 0;
    11                     matrix[0][j] = 0;
    12                 }
    13             }
    14         }
    15         for(int i=m-1;i>=0;i--){
    16             for(int j=n-1;j>0;j--){
    17                 if(matrix[i][0]==0||matrix[0][j]==0) matrix[i][j] = 0;
    18             }
    19             if(col0==0) matrix[i][0] = 0;
    20         }
    21     }
    22 }
  • 相关阅读:
    SHELL变量
    LA 2797
    计算几何-圆 模板 训练指南267
    hdu 2553 八皇后问题 基础
    CodeForces 557C Arthur and Table STL的使用
    LA 3263 好看的一笔画 欧拉几何+计算几何模板
    UVA 11178 Morley's Theorem 计算几何模板
    poj 1113
    poj 2187 Beauty Contest 凸包模板+求最远点对
    hdu 1081 dp问题:最大子矩阵和
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6384822.html
Copyright © 2011-2022 走看看