力扣 73. 矩阵置零

🔗 https://leetcode.cn/problems/set-matrix-zeroes

题目

  • 给一个 n * m 的二维数组,如果有一个 0 元素,则把对应的行列都置为零
  • 要求 in-place

思路

  • 直观的想法是遍历一遍矩阵,用 set 分别记录下 0 元素对应的行和列,再遍历下矩阵,对命中相关行列的元素置零。不过该方法不符合题目要求,需要有额外的存储空间
  • 取第一行和第一列作为标记位,把 0 元素对应的 [row][0] [0][col] 设置为 0,遍历矩阵时根据这些标志位,判断当前元素是否需要设置为 0
    • 需要特殊处理下第一行和第一列的 0 元素,避免在遍历的过程中标志位被修改

代码

cpp 复制代码
class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        bool mark_row = 0, mark_col = 0;
        for (int i = 0; i < matrix.size(); i++) {
            for (int j = 0; j < matrix[i].size(); j++) {
                if (matrix[i][j] == 0) {
                    if (i == 0) {
                        mark_row = true;
                    }
                    if (j == 0) {
                        mark_col = true;
                    }
                    if(i== 0 || j == 0) continue;
                    matrix[i][0] = 0;
                    matrix[0][j] = 0;
                }
            }
        }

        for (int i = 1; i < matrix.size(); i++) {
            for (int j = 1; j < matrix[i].size(); j++) {
                if (matrix[i][0] == 0) matrix[i][j] = 0;
                if (matrix[0][j] == 0) matrix[i][j] = 0;
            }
         }
        if (mark_row) {
            for (int i = 0; i < matrix[0].size(); i++) matrix[0][i] = 0;
        }

        if (mark_col) {
            for (int i = 0; i < matrix.size(); i++) matrix[i][0] = 0;
        }
        
    }
};v
相关推荐
不如自挂东南吱16 分钟前
空间相关性 和 怎么捕捉空间相关性
人工智能·深度学习·算法·机器学习·时序数据库
荒诞硬汉29 分钟前
对象数组.
java·数据结构
洛生&37 分钟前
Elevator Rides
算法
2501_933513041 小时前
关于一种计数的讨论、ARC212C Solution
算法
Wu_Dylan1 小时前
智能体系列(二):规划(Planning):从 CoT、ToT 到动态采样与搜索
人工智能·算法
散峰而望1 小时前
【算法竞赛】栈和 stack
开发语言·数据结构·c++·算法·leetcode·github·推荐算法
知乎的哥廷根数学学派1 小时前
基于多尺度注意力机制融合连续小波变换与原型网络的滚动轴承小样本故障诊断方法(Pytorch)
网络·人工智能·pytorch·python·深度学习·算法·机器学习
蚊子码农1 小时前
算法题解记录-208实现Trie前缀树
运维·服务器·算法
2301_800256111 小时前
【人工智能引论期末复习】第3章 搜索求解2 - 对抗搜索
人工智能·算法·深度优先
程序猿阿伟1 小时前
《量子算法开发实战手册:Python全栈能力的落地指南》
python·算法·量子计算