zoukankan      html  css  js  c++  java
  • 73. Set Matrix Zeroes(js)

    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.

    Example 1:

    Input: 
    [
      [1,1,1],
      [1,0,1],
      [1,1,1]
    ]
    Output: 
    [
      [1,0,1],
      [0,0,0],
      [1,0,1]
    ]
    

    Example 2:

    Input: 
    [
      [0,1,2,0],
      [3,4,5,2],
      [1,3,1,5]
    ]
    Output: 
    [
      [0,0,0,0],
      [0,4,5,0],
      [0,3,1,0]
    ]

    题意:给定一个二维数组,数字0所在行,列都变为0,返回转化过的数组
    代码如下:
    /**
     * @param {number[][]} matrix
     * @return {void} Do not return anything, modify matrix in-place instead.
     */
    //查找每个元素,若为0在该元素的行首和列首设为0,如果行首或者列首存在未0的元素,利用两个bool值的变量检测
    //然后再遍历数组
    var setZeroes = function(matrix) {
        //第一行是否有0
        var row0=false;
        //第一列是否有0
        var col0=false;
        //行数
        var rowLen=matrix.length;
        //列数
        var colLen=matrix[0].length;
        //第一行是否有为0的项
        for(var i=0;i<colLen;i++){
          if(matrix[0][i]==0){
              row0=true;
              break;
          }
        }
        //第一列是否有0的项
        for(var i=0;i<rowLen;i++){
            if(matrix[i][0]==0){
                col0=true;
                break;
            }
        }
        //检测其他项
        for(var i=1;i<rowLen;i++){
            for(var j=1;j<colLen;j++){
                if(matrix[i][j]==0){
                    matrix[0][j]=matrix[i][0]=0;
                }
            }
        }
        //检测每一行首和列首是否有0
        for(var i=1;i<rowLen;i++){
            for(var j=1;j<colLen;j++){
                if(matrix[i][0]==0 || matrix[0][j]==0){
                    matrix[i][j]=0;
                }
            }
        }
        //判断行首,列首本身是否有0
        if(row0){
            for(var i=0;i<colLen;i++){
                matrix[0][i]=0;
            }
        }
        if(col0){
            for(var i=0;i<rowLen;i++){
                matrix[i][0]=0;
            }
        }
    };
  • 相关阅读:
    为什么下水井盖是圆的
    静心尽力
    菜鸟的一年
    [转]Libev教程
    流媒体:V4L2视频获取
    [转]Libev源码分析 -- 整体设计
    c#操作xml增删改查
    dwz简单配置与操作
    jsonp 跨域访问
    操作cookie.判断浏览器系统版本,判断safir浏览器存储数据
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/10544894.html
Copyright © 2011-2022 走看看