73. Set Matrix Zeroes 矩阵设0

2022-04-14  本文已影响0人  sarto

题目

给定一个 m*n 的矩阵,如果矩阵中有一个元素为 0,则需要将整行或整列设置为0。

解析

需要进行两次矩阵遍历操作。

  1. 统计需要需要置为0的行和列。
  2. 分别进行行和列的置 0 操作。

伪代码

row [m]bool
col [n]bool
for i<m
  for j<n
    if m[i][j] == 0
      row[i]=true
      col[j]=true
for i<m
  for j<n
    if row[i] || col[j]
      m[i][j] == 0

代码

func setZeroes(matrix [][]int)  {
    m:=len(matrix)
    n:=len(matrix[0])
    
    row := make([]bool, m)
    col := make([]bool, n)
    for i:=0;i<m;i++ {
        for j:=0;j<n;j++ {
            if matrix[i][j] == 0 {
                row[i]=true
                col[j]=true
            }
        }
    }
    for i:=0;i<m;i++ {
        for j:=0;j<n;j++ {
            if row[i] || col[j] {
                matrix[i][j]=0
            }
        }
    }
}
image.png

后记

  1. 不分别进行行的列的置0,转为考虑,该点是否被置0,取决与 row 或 col。
上一篇 下一篇

猜你喜欢

热点阅读