Leetcode——矩阵置零
Posted Yawn,
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode——矩阵置零相关的知识,希望对你有一定的参考价值。
1. 矩阵置零
(1)朴素(Set)
思路:
- 第一次循环,存储存在元素为0的行数和列数
- 第二次循环,将存在元素0的行列全部置0
- 时间复杂度O(m*n)
空间复杂度O(m+n)
class Solution {
public void setZeroes(int[][] matrix) {
Set<Integer> row = new HashSet<>();
Set<Integer> col = new HashSet<>();
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == 0) {
row.add( i);
col.add(j);
}
}
}
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (row.contains(i) || col.contains(j)) {
matrix[i][j] = 0;
}
}
}
}
}
(2)朴素(数组)
class Solution {
public void setZeroes(int[][] matrix) {
boolean[] row = new boolean[matrix.length];
boolean[] col = new boolean[matrix[0].length];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == 0) {
row[i] = true;
col[j] = true;
}
}
}
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (row[i] == true || col[j] == true) {
matrix[i][j] = 0;
}
}
}
}
}
以上是关于Leetcode——矩阵置零的主要内容,如果未能解决你的问题,请参考以下文章