力扣73:矩阵置零

力扣73:矩阵置零

题目

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

思路

因为要使用原地算法所以我们没法新创一个二维数组来幅值给矩阵matrix。因为要将同行和同列的所有元素全部设为0所以一个一个的遍历然后将同行列设为0的办法是不可取的,这样会导致整个矩阵最后都为0。那么更加简单的方法就是我们可以先遍历一次将矩阵中为0的元素的行列记录下来之后再进行一次遍历。第二次遍历时我们需要判断该元素所在的行列是否被记录过从而来判断是否需要将这个元素设为0。

代码

cpp 复制代码
class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();
        vector<int> row(m);
        vector<int> col(n);
        //第一次遍历
        for(int i = 0 ; i < m ;i++)
        {
            for(int j = 0;j < n;j++)
            {
                //如果元素值为0则记录它的行列号
                if(matrix[i][j] == 0)
                {
                    row[i] = 1;
                    col[j] = 1;
                }
            }
        }
        //第二次遍历
        for(int i = 0;i < m ;i++)
        {
            for(int j = 0;j < n ;j++)
            {
                //如果元素的行列被记录了则将元素置为0
                if(row[i] == 1 || col[j] == 1)
                {
                    matrix[i][j] = 0;
                }
            }
        }
    }
};
相关推荐
weixin_4997715514 小时前
C++中的组合模式
开发语言·c++·算法
iAkuya15 小时前
(leetcode)力扣100 62N皇后问题 (普通回溯(使用set存储),位运算回溯)
算法·leetcode·职场和发展
近津薪荼15 小时前
dfs专题5——(二叉搜索树中第 K 小的元素)
c++·学习·算法·深度优先
xiaoye-duck15 小时前
吃透 C++ STL list:从基础使用到特性对比,解锁链表容器高效用法
c++·算法·stl
松☆15 小时前
CANN与大模型推理:在边缘端高效运行7B参数语言模型的实践指南
人工智能·算法·语言模型
java干货15 小时前
为什么 “File 10“ 排在 “File 2“ 前面?解决文件名排序的终极算法:自然排序
开发语言·python·算法
皮皮哎哟15 小时前
数据结构:嵌入式常用排序与查找算法精讲
数据结构·算法·排序算法·二分查找·快速排序
程序员清洒15 小时前
CANN模型剪枝:从敏感度感知到硬件稀疏加速的全链路压缩实战
算法·机器学习·剪枝
vortex516 小时前
几种 dump hash 方式对比分析
算法·哈希算法
lbb 小魔仙16 小时前
面向 NPU 的高性能矩阵乘法:CANN ops-nn 算子库架构与优化技术
线性代数·矩阵·架构