73. 矩阵置零

可以选择遍历两遍matrix,一遍记录哪些行哪些列需要置0,一遍置0

O(1)空间复杂度的做法:

首先设置两个boolean型变量记录第0行和第0列是否需要置0

然后用第0行和第0列记录需要置0的行和列

java 复制代码
class Solution {
    public void setZeroes(int[][] matrix) {
        int m = matrix.length, n = matrix[0].length;
        boolean row0 = false, col0 = false;
        for (int j = 0; j < n; j++) {
            if (matrix[0][j] == 0) row0 = true;
        }
        for (int i = 0; i < m; i++) {
            if (matrix[i][0] == 0) col0 = true;
        }
        for (int i = 1; i < m; i++) {
            for (int j = 1; j < n; j++) {
                if (matrix[i][j] == 0) matrix[0][j] = matrix[i][0] = 0;
            }
        }
        // set 0
        for (int i = 1; i < m; i++) {
            for (int j = 1; j < n; j++) {
                if (matrix[i][0] == 0 || matrix[0][j] == 0) matrix[i][j] = 0;
            }
        }
        if (row0) {
            for (int j = 0; j < n; j++) {
                matrix[0][j] = 0;
            }
        }
        if (col0) {
            for (int i = 0; i < m; i++) {
                matrix[i][0] = 0;
            }
        }
    }
}
相关推荐
从零点6 小时前
插补算法(逐点比较法)+PWM配置操作
算法
DARLING Zero two♡7 小时前
【优选算法】LinkedList-Concatenate:链表的算法之契
数据结构·c++·算法·链表
Moonbit7 小时前
MoonBit Pearls Vol.14:哈希表避坑指南
后端·算法·编程语言
杰克尼7 小时前
120. 三角形最小路径和
算法
树在风中摇曳7 小时前
C语言动态内存管理:从基础到进阶的完整解析
c语言·开发语言·算法
FuckPatience7 小时前
WPF MatrixTransform 矩阵参数的疑问?
线性代数·矩阵
mjhcsp7 小时前
C++ 高精度计算:突破数据类型限制的实现与应用
开发语言·c++·算法·高精度
从后端到QT7 小时前
标量-向量-矩阵-基础知识
人工智能·机器学习·矩阵
大袁同学8 小时前
【二叉搜索树】:程序的“决策树”,排序数据的基石
数据结构·c++·算法·决策树·stl
蓝色汪洋8 小时前
xtu oj环--唉
算法