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;
            }
        }
    }
}
相关推荐
小白路过15 分钟前
CSS transform矩阵变换全面解析
前端·css·矩阵
多喝开水少熬夜27 分钟前
Trie树相关算法题java实现
java·开发语言·算法
WBluuue42 分钟前
数据结构与算法:树上倍增与LCA
数据结构·c++·算法
bruk_spp1 小时前
牛客网华为在线编程题
算法
lkbhua莱克瓦241 小时前
Java基础——集合进阶用到的数据结构知识点1
java·数据结构·笔记·github
杨福瑞1 小时前
数据结构:单链表(2)
c语言·开发语言·数据结构
王璐WL2 小时前
【数据结构】单链表及单链表的实现
数据结构
黑屋里的马3 小时前
java的设计模式之桥接模式(Bridge)
java·算法·桥接模式
z187461030033 小时前
list(带头双向循环链表)
数据结构·c++·链表
sin_hielo3 小时前
leetcode 1611
算法·leetcode