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;
            }
        }
    }
}
相关推荐
小妖6664 分钟前
js 实现插入排序算法(希尔排序算法)
java·算法·排序算法
星火开发设计5 分钟前
标准模板库 STL:C++ 的利器 —— 容器、算法、迭代器
java·开发语言·数据结构·c++·算法·html
blackicexs7 分钟前
第五周第一天
算法
MIngYaaa5208 分钟前
2026寒假牛客 2.13
算法
大梦南柯10 分钟前
第一次作业
算法
iAkuya12 分钟前
(leetcode)力扣100 71字符串解码(栈(两种)||递归)
windows·算法·leetcode
重生之后端学习17 分钟前
105. 从前序与中序遍历序列构造二叉树
java·数据结构·后端·算法·深度优先
样例过了就是过了17 分钟前
LeetCodere热题100 最小覆盖子串
数据结构·算法·leetcode
追随者永远是胜利者20 分钟前
(LeetCode-Hot100)10. 正则表达式匹配
java·算法·leetcode·go
We་ct21 分钟前
LeetCode 146. LRU缓存:题解+代码详解
前端·算法·leetcode·链表·缓存·typescript