题目:

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

提示:

m == matrix.length

n == matrix[0].length
1 <= m, n <= 200
-231 <= matrix[i][j] <= 231 - 1
 进阶:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/set-matrix-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、

1.遍历数组,用两个标记数组记录每一行每一列是否有0出现,如果有0,则标记为true;

2.再次遍历数组,如果遇到标记数字,则把它所在的行和列都置零。

代码:

 

二、

1.使用两个标记变量,将数组第一行和第一列为零的元素进行标记;

2.使用其他行和列,将第一行和列的元素置零;

3.根据第一行和列的0元素,将0元素对应的行和列置0;

4.最后根据第一行第一列所做标记,将第一行和第一列的其他元素置0。

代码:

 1 class Solution {
2 public void setZeroes(int[][] matrix) {
3 int m = matrix.length;
4 int n = matrix[0].length;
5 boolean row = false;
6 boolean col = false;
7 //先标记第一行和第一列的0元素
8 for(int i = 0; i < m; i++){
9 if(matrix[i][0] == 0){
10 col = true;
11 }
12 }
13 for(int j = 0;j < n; j++){
14 if(matrix[0][j] == 0){
15 row = true;
16 }
17 }
18 //使用其他行和列将第一行和列的元素置零
19 for(int i = 1; i < m; i++){
20 for(int j = 1; j < n; j++){
21 if(matrix[i][j] == 0){
22 matrix[i][0] = 0;
23 matrix[0][j] = 0;
24 }
25 }
26 }
27 //根据第一行和列的0元素,将0元素对应的行和列置0
28 for(int i = 1; i < m; i++){
29 for(int j = 1; j < n; j++){
30 if(matrix[i][0] == 0){
31 matrix[i][j] = 0;
32 }
33 if(matrix[0][j] == 0){
34 matrix[i][j] = 0;
35 }
36 }
37 }
38 //最后根据第一行第一列所做标记,将第一行和第一列的其他元素置0
39 if(row){
40 for(int i = 0; i < n; i++){
41 matrix[0][i] = 0;
42 }
43 }
44 if(col){
45 for(int i = 0; i < m; i++){
46 matrix[i][0] = 0;
47 }
48 }
49 }
50 }

力扣73(java)-矩阵置零(中等)的更多相关文章

  1. 【LeetCode 73】矩阵置零

    题目链接 [题解] 如果a[i][j]==0. 就把第i行的第一个数字置为0 然后把第j列的第一个数字置为0 最后再处理下每行第一个为0的行.每列第一个为0的列. (第一行和第一列都得用同一个位置处理 ...

  2. Java实现 LeetCode 73 矩阵置零

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

  3. LeetCode:矩阵置零【73】

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

  4. leetcode 73 矩阵置零 Python

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

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

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

  6. 力扣—set matrix zeroes (矩阵置零) python实现

    题目描述: 中文: 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 英文: Given a m x n matrix, if an eleme ...

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

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

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

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

  9. leetcode刷题-73矩阵置零

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

  10. 073 Set Matrix Zeroes 矩阵置零

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

随机推荐

  1. Multi-Runtime多运行时架构

    概念 Multi-Runtime Multi-Runtime 是一种服务端架构思路,把应用里的所有中间件挪到 Sidecar 里,使得"业务运行时"和"技术运行时&quo ...

  2. Java基础知识篇02——Java基本语法

    一.数据类型 定义: 就是用了保存数据的一个类型,一种数据类型,只能保存该类型数据值 作用: 只有了解数据类型,才能选择合适的类型存放数据,才能更好的利用计算机硬件资源(内存和硬盘等). 不同的数据类 ...

  3. 大年学习linux(第二节---磁盘管理)

    二.磁盘管理 文件系统配置文件 /etc/filesystems: 系统指定的测试挂载文件系统类型 /proc/filesystems: linux 系统已经加载的文件系统类型 /lib/module ...

  4. MySQL varchar详解

    说明:以下结果都是在mysql8.2及Innodb环境下测试. varcahr(255)是什么含义? varchar(255) 表示可以存储最大255个字符,至于占多少个字节由字符集决定. varch ...

  5. html+css实现指针时钟

    周末时间,突然想用html+css实现一个简单的指针时钟的功能,以下是具体代码实现,文末附有线上链接地址. 效果图: 1.代码 1.1.clock.html <!DOCTYPE html> ...

  6. mybatis @Param参数 记录

    报错信息 org.apache.ibatis.binding.BindingException: Parameter 'XX' not found. Available parameters are ...

  7. SpringBoot项目 前后端分离 ajax附件上传下载

    前台界面 上传 下载 前台代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  8. verilog之基本结构

    verilog语法的基本结构 1.verilog的定义 verilog,一种硬件描述语言,致力于提高数字电路,尤其是大规模数字电路的描述规范.从描述就可以看出,这个语言和C不同,不是高级语言.但是,这 ...

  9. kingbase ES 关于NULL及其相关函数

    文章概要: 本文对主要就NULL值及其相关处理函数进行讨论,同时也介绍了ora_input_emptystr_isnull参数 一,关于NULL值 1,sql中的null值 null 值代表未知数据, ...

  10. mybatis一次执行多条SQL语句报错

    如果这样来写一个 mapper 1 <update id="createTable3" parameterType="map"> 2 drop ta ...