力扣热题100道之73矩阵置零

解法

先遍历一遍所有的数组,定义一个行记录数组,和一个列记录数组,如果一个元素为0,将他的行和列数组对应的值变为1,再遍历数组,将行和列数组中为1的地方变为0。

题解中优化的解法:

1:将第一列和第一行作为标记的行和列,再定义两个变量分别标记第一行和第一列原来是否有0的标记

2:只记录第一列的,第一列的第一个元素可以记录第一行中是否有0。这种方法感觉纯纯没事找事,差这一点空间吗?差这一个变量的空间吗?

复制代码
class Solution {
    public void setZeroes(int[][] matrix) {
        int ml=matrix.length;
        int nl=matrix[0].length;
        int[]row=new int[ml];
        int[]colnum=new int[nl];
        for(int i=0;i<ml;i++){
            for(int j=0;j<nl;j++){
                if(matrix[i][j]==0){
                    row[i]=1;
                    colnum[j]=1;
                }
            }
        }
        for(int i=0;i<ml;i++){
            for(int j=0;j<nl;j++){
                if(row[i]==1){
                    matrix[i][j]=0;
                }
                if(colnum[j]==1){
                    matrix[i][j]=0;
                }
            }
        }
    }
}
历史解法

这道题有点简单,并且题解的做法也还好,不难想到,一下子就做出来了。

相关推荐
csdn_aspnet19 小时前
C语言 Lomuto分区算法(Lomuto Partition Algorithm)
c语言·开发语言·算法
谙弆悕博士20 小时前
【附C源码】从零实现C语言堆数据结构:原理、实现与应用
c语言·数据结构·算法··数据结构与算法
gaosushexiangji1 天前
DIC系统推荐:基于千眼狼三维数字图像相关的无人机旋翼疲劳试验全场应变与位移测量
人工智能·算法
小王C语言1 天前
【线程概念与控制】:线程封装
jvm·c++·算法
圣保罗的大教堂1 天前
leetcode 796. 旋转字符串 简单
leetcode
kyle~1 天前
工程数学---点云配准卡布施(Kabsch)算法(求解最优旋转矩阵)
线性代数·算法·矩阵
张二娃同学1 天前
03_变量常量与输入输出_printf与scanf详解
算法
江南十四行1 天前
并发编程(一)
java·jvm·算法
z200509301 天前
今日算法(依旧二叉树)
算法·leetcode·职场和发展
Zxc_1 天前
《遗传算法:从自然选择到Rastrigin函数优化,手写一个完整的进化求解器》
算法