zoukankan      html  css  js  c++  java
  • 矩阵置零

    矩阵置零

    给定一个m x n的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。请使用原地算法。

    示例

    输入: 
    [
      [1,1,1],
      [1,0,1],
      [1,1,1]
    ]
    输出: 
    [
      [1,0,1],
      [0,0,0],
      [1,0,1]
    ]
    
    输入: 
    [
      [0,1,2,0],
      [3,4,5,2],
      [1,3,1,5]
    ]
    输出: 
    [
      [0,0,0,0],
      [0,4,5,0],
      [0,3,1,0]
    ]
    
    

    题解

    /**
     * @param {number[][]} matrix
     * @return {void} Do not return anything, modify matrix in-place instead.
     */
    var setZeroes = function(matrix) {
        var row = new Set();
        var column = new Set();
        matrix.forEach( (line, i) => {
            line.forEach( (v, k) => {
                if(v === 0) {
                    row.add(i);
                    column.add(k);
                }
            })
        } )
        matrix.forEach( (line, i) => {
            line.forEach( (v, k) => {
                if( row.has(i) || column.has(k) ) matrix[i][k] = 0;
            })
        } )
    };
    

    思路

    使用了比较简单的解法,首先设置两个Set用以记录需要置0的行号和列号,然后遍历矩阵,如果遍历到矩阵的值为0,那么就将该值的行号与列号分别记录到两个Set中,然后再次遍历整个矩阵,如果该值的行号或者列号在Set中,那么就将矩阵中的这个值置为0,遍历完成之后就实现了原地置0

    每日一题

    https://github.com/WindrunnerMax/EveryDay
    

    题源

    https://leetcode-cn.com/problems/set-matrix-zeroes/
    
  • 相关阅读:
    js相关小实例——大图轮播
    js相关小实例——div实现下拉菜单
    js相关小实例——二级菜单
    html5部分相关
    CSS3常用属性(边框、背景、文本效果、2D转换、3D转换、过渡、有过渡效果大图轮播、动画)
    数据访问
    php测试
    单例模式
    Doc
    横竖列表 下拉隐藏显示
  • 原文地址:https://www.cnblogs.com/WindrunnerMax/p/13193032.html
Copyright © 2011-2022 走看看