矩阵置零

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

进阶:

  • 一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。
  • 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
  • 你能想出一个仅使用常量空间的解决方案吗?

示例说明请见LeetCode官网。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/set-matrix-zeroes/

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:穷举法

首先,声明2个List分别为zeroRows和zeroColumns用来记录行和列中存在为0元素的行号和列号,然后2次双重遍历matrix数组,分别获取到存在元素为0的行号和列号,并存到zeroRows和zeroColumns中,最后遍历zeroRows和zeroColumns中的行号和列号,将matrix数组中相应的行和列的所有值都置为0。

说明:这是最笨的方法,待优化。

import java.util.ArrayList;
import java.util.List; public class LeetCode_073 {
public static void setZeroes(int[][] matrix) {
List<Integer> zeroRows = new ArrayList<>();
List<Integer> zeroColumns = new ArrayList<>();
// 获取哪些行存在元素为0
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] == 0) {
zeroRows.add(i);
break;
}
}
} // 获取哪些列存在元素为0
for (int i = 0; i < matrix[0].length; i++) {
for (int j = 0; j < matrix.length; j++) {
if (matrix[j][i] == 0) {
zeroColumns.add(i);
break;
}
}
} // 将存在元素为0的行全都置为0
for (int i = 0; i < matrix.length; i++) {
if (zeroRows.contains(i)) {
for (int j = 0; j < matrix[i].length; j++) {
matrix[i][j] = 0;
}
}
} // 将存在元素为0的列全都置为0
for (int j = 0; j < matrix[0].length; j++) {
if (zeroColumns.contains(j)) {
for (int i = 0; i < matrix.length; i++) {
matrix[i][j] = 0;
}
}
}
} public static void main(String[] args) {
int[][] matrix = new int[][]{{1, 1, 1}, {1, 0, 1}, {1, 1, 1}};
setZeroes(matrix);
for (int[] ints : matrix) {
for (int anInt : ints) {
System.out.print(anInt);
}
System.out.println();
}
}
}

【每日寄语】 自立更生,艰苦奋斗。

LeetCode-073-矩阵置零的更多相关文章

  1. LeetCode:矩阵置零【73】

    LeetCode:矩阵置零[73] 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [   [1,1,1],   ...

  2. Java实现 LeetCode 73 矩阵置零

    73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ...

  3. leetcode 73 矩阵置零 Python

    矩阵置零     给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [   [1,1,1],   [1,0,1],   [1 ...

  4. LeetCode 73. 矩阵置零(Set Matrix Zeroes)

    题目描述 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [   [1,1,1],   [1,0,1],   [1,1,1 ...

  5. 【python】Leetcode每日一题-矩阵置零

    [python]Leetcode每日一题-矩阵置零 [题目描述] 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 .请使用 原地 算法. 进阶: 一个直观的解 ...

  6. 073 Set Matrix Zeroes 矩阵置零

    给定一个 m x n 的矩阵,如果一个元素为 0 ,则将这个元素所在的行和列都置零.你有没有使用额外的空间?使用 O(mn) 的空间不是一个好的解决方案.使用 O(m + n) 的空间有所改善,但仍不 ...

  7. leetcode[73] Set Matrix Zeroes 将矩阵置零

    给定一个矩阵,把零值所在的行和列都置为零.例如: 1 2 3 1 3 1 1 1 操作之后变为 1 3 0 0 0 1 1 方法1: 赋值另存一个m*n的矩阵,在原矩阵为零的值相应置新的矩阵行和列为零 ...

  8. leetcode.矩阵.73矩阵置零-Java

    1. 具体题目 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: 输出:[ [  [1,1,1],  [1,0,1],  [ ...

  9. leetcode刷题-73矩阵置零

    题目 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [  [1,1,1],  [1,0,1],  [1,1,1]]输出: ...

  10. Leetcode 矩阵置零

    题目描述(中等难度) 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 .请使用 原地 算法. 进阶: 一个直观的解决方案是使用  O(mn) 的额外空间,但这 ...

随机推荐

  1. React之常用技术栈

     · react-redux:https://www.cnblogs.com/jingxuan-li/p/12439181.html  · react-router-dom:https://www.c ...

  2. plsql 储存过程 参数的传递方式?

    /* 存储过程 一.oracel存储过程 1.没有返回值 return 值: 2.用输出参数来代替返回值: 3.输出参数可以有多个 二.参数的传递方式 1. 按位置传递 2. 按名字传递 3.混合传递 ...

  3. 如何在Visual Studio中添加opencvsharp的可视化工具

    这个文件放到这个目录下,就可以看mat对象查看了

  4. ApacheCN 机器学习译文集 20211111 更新

    台湾大学林轩田机器学习笔记 机器学习基石 1 -- The Learning Problem 2 -- Learning to Answer Yes/No 3 -- Types of Learning ...

  5. VsCode配置C/C++开发环境

    Visual Studio Code(VS Code)是基于 Electron 开发,支持 Windows.Linux 和 macOS 操作系统.内置了对JavaScript,TypeScript和N ...

  6. 求Fibonacci数列通项公式

    0. Intro \[f_n=\begin{cases} 0 & (n=0) \\ 1 & (n=1) \\ f_{n-1}+f_{n-2} & (n>1) \end{c ...

  7. JAVA多线程学习- 三:volatile关键字

    Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个 ...

  8. jar包冲突时怎么办

    因为项目中会依赖许多jar包,免不得就会有冲突,那怎么解决呢? 使用 mvn dependency:tree 可以看到各个包的依赖关系 [INFO] | +- commons-cli:commons- ...

  9. 取消a标签的默认行动(跳转到href)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. mysql启动错误:mysql.sock丢失

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 我的是Cent ...