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;
            }
        }
    }
}
相关推荐
ofoxcoding2 分钟前
Jev 模型评测深度解析:核心得分、能力局限与最佳适用任务场景
人工智能·算法·机器学习·ai
Evand J18 分钟前
【MATLAB例程】三维A*路径规划与TOA-AOA-TDOA融合定位算法。附下载链接
数据库·算法·matlab
Doubbbbbbble云27 分钟前
图算法中的剪枝技术与启发式优化分析4
算法·机器学习·剪枝
鶴哥只手遮天30 分钟前
CFL3D深度解析:NASA经典CFD求解器的架构、算法与工程实践
算法
维克兜率天31 分钟前
【维克】价差交易实战:配对交易的核心参数设置
大数据·笔记·算法·量化
dtq042432 分钟前
数据结构 - 树的概念
c语言·数据结构·学习·算法
晒太羊的猫32 分钟前
hot100多维动态规划刷题
算法·动态规划
Dream it possible!37 分钟前
LeetCode_热题100_知识点总结
算法·leetcode·职场和发展
鶴哥只手遮天37 分钟前
从像素到战场:红外场景仿真引擎的核心技术深度解析
算法
anew___39 分钟前
《从零手写操作系统 (19):Ext2文件系统实战——从内存到磁盘的跨越》
java·服务器·前端·数据库·算法