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;
            }
        }
    }
}
相关推荐
MediaTea7 小时前
AI 术语通俗词典:精确率(分类)
人工智能·算法·机器学习·分类·数据挖掘
Morwit7 小时前
【力扣hot100】 416. 分割等和子集
数据结构·c++·算法·leetcode·职场和发展
ECT-OS-JiuHuaShan7 小时前
朱梁整体论,万有代谢元,矛盾因果网,人间正道是沧桑
人工智能·科技·算法·机器学习·拓扑学
qeen877 小时前
【算法笔记】二分查找与二分答案
c语言·c++·笔记·学习·算法·二分
C雨后彩虹7 小时前
投篮大赛问题
java·数据结构·算法·华为·面试
橘白3167 小时前
GVHMR
人工智能·算法·机器人·机器人数据·视频动捕
宵时待雨7 小时前
优选算法专题3:二分查找
数据结构·c++·算法·leetcode·职场和发展
代码飞一会儿7 小时前
算法与数据结构之树——让数据查找更加迅速
算法
工业甲酰苯胺7 小时前
2026 产业 AI 爆发:JNPF 助企业少走 3 年弯路
人工智能·算法·低代码
贾斯汀玛尔斯7 小时前
每天学一个算法--最短路径问题与三类基本算法
算法