力扣刷题--73. 矩阵置零【中等】

题目描述

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

算法分析

标签:标记数组

额外定义一个标记二维数组,用于存储matrix0存储的位置在哪里,如果是matrix的某个坐标是0,那么在标记数组相对应的地方把数字置为1,最后根据标记数组,把相应的行列置成0即可。

完整代码

cpp 复制代码
class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        //额外创建一个二维数组,用于存储0的位置信息
        int m=matrix.size();//行
        int n=matrix[0].size();//列
        vector<vector<int>>flg(m,vector<int>(n,0));
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(matrix[i][j]==0)
                    flg[i][j]=1;//有1的地方代表有0    
            }
        }
        for(int i=0;i<m;i++)    
        {
            for(int j=0;j<n;j++)    
            {
                if(flg[i][j]==1)    
                {
                    for(int p=0;p<n;p++)    
                        matrix[i][p]=0;    
                    for(int q=0;q<m;q++)    
                        matrix[q][j]=0;    
                }
            }
        }
    }
};
相关推荐
wanderist.2 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法
All for pursuit.2 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode
weixin_307779132 小时前
C++代码实现MATLAB中的crossval函数功能
开发语言·c++·算法·matlab
青少儿编程课堂2 小时前
背包问题(0/1 背包与完全背包)解题精讲——动态规划入门
c++·python·算法·bfs·信息学竞赛
光影少年3 小时前
为什么 JavaScript 中 0.1 + 0.2 !== 0.3,如何让其相等?
前端·javascript·算法
HEJOO93 小时前
Linux 设备驱动系列——使用全局工作队列
java·linux·算法
Code_Solitude3 小时前
c语言:递归
java·c语言·算法
edtoplort4 小时前
OpenAI紧急叫停GPT-6.1 Astra训练,奥尔特曼为何踩刹车
人工智能·gpt·算法
蒜香可达鸭4 小时前
让视频生成流水线跑不崩:一个事件溯源的多 Agent 可靠执行框架
算法
小羊没烦恼!5 小时前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#