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 }
  • 相关阅读:
    Linux多线程Pthread学习小结
    TCP三次握手/四次挥手
    内存管理内幕
    Delphi 中分发设计时包
    一个小的算法问题解决
    写了一个验证数字范围的正则表达式
    用 XML 文件持久化和恢复图片信息
    string.Empty 和 "" 并不总是可以互换的
    博客园用的 FreeTextBox 有 bug
    乱花渐欲迷人眼。。。
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6384822.html
Copyright © 2011-2022 走看看