前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >矩阵置零

矩阵置零

作者头像
WindrunnerMax
发布2020-08-27 10:56:46
3440
发布2020-08-27 10:56:46
举报
文章被收录于专栏:Czy‘s BlogCzy‘s Blog

矩阵置零

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

示例

代码语言:javascript
复制
输入: 
[
  [1,1,1],
  [1,0,1],
  [1,1,1]
]
输出: 
[
  [1,0,1],
  [0,0,0],
  [1,0,1]
]
代码语言:javascript
复制
输入: 
[
  [0,1,2,0],
  [3,4,5,2],
  [1,3,1,5]
]
输出: 
[
  [0,0,0,0],
  [0,4,5,0],
  [0,3,1,0]
]

题解

代码语言:javascript
复制
/**
 * @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

每日一题

代码语言:javascript
复制
https://github.com/WindrunnerMax/EveryDay

题源

代码语言:javascript
复制
https://leetcode-cn.com/problems/set-matrix-zeroes/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 矩阵置零
    • 示例
      • 题解
        • 思路
          • 每日一题
            • 题源
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档