力扣热题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;
                }
            }
        }
    }
}
历史解法

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

相关推荐
RTC老炮3 小时前
webrtc降噪-PriorSignalModelEstimator类源码分析与算法原理
算法·webrtc
草莓火锅5 小时前
用c++使输入的数字各个位上数字反转得到一个新数
开发语言·c++·算法
西西弗Sisyphus5 小时前
线性代数 - 3 阶方阵的行列式 可视化
线性代数·矩阵·行列式·满秩·降秩
西西弗Sisyphus5 小时前
线性代数 - 矩阵乘法能换括号,不能换顺序;满足结合律,不满足交换律
线性代数·矩阵
散峰而望5 小时前
C/C++输入输出初级(一) (算法竞赛)
c语言·开发语言·c++·算法·github
Kuo-Teng5 小时前
LeetCode 160: Intersection of Two Linked Lists
java·算法·leetcode·职场和发展
fie88895 小时前
基于MATLAB的狼群算法实现
开发语言·算法·matlab
gihigo19985 小时前
MATLAB中生成混淆矩阵
开发语言·matlab·矩阵
偷偷的卷6 小时前
【算法笔记 11】贪心策略六
笔记·算法
ZPC82106 小时前
FPGA 部署ONNX
人工智能·python·算法·机器人