当前位置: 首页 > article >正文

力扣 73. 矩阵置零

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

题目

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

思路

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

代码

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

http://www.kler.cn/a/411143.html

相关文章:

  • 【算法】连通块问题(C/C++)
  • 【AI绘画】Midjourney进阶:色调详解(上)
  • Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序
  • 微信小程序下拉刷新与上拉触底的全面教程
  • 网络安全学习77天(记录)
  • Hive离线数仓结构分析
  • 【vue3实现微信小程序】每日专题与分页跳转的初步实现
  • 微服务篇-深入了解使用 RestTemplate 远程调用、Nacos 注册中心基本原理与使用、OpenFeign 的基本使用
  • 【Unity3D】创建自定义字体
  • C语言实例之9斐波那契数列实现
  • 图论入门编程
  • 安装 IntelliJ IDEA
  • 深度学习模型:循环神经网络(RNN)
  • 极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【五】
  • Error: Invalid version flag: if 问题排查
  • 【DFS】个人练习-Leetcode-646. Maximum Length of Pair Chain
  • jvm核心组件介绍
  • 手搓人工智能—聚类分析(下)谱系聚类与K-mean聚类
  • E2、UML类图顺序图状态图实训
  • 计算机网络的功能
  • 银行卡 OCR 识别 API 接口的发展前景
  • 解决 java -jar 报错:xxx.jar 中没有主清单属性
  • 物联网智能项目:智能家居系统的设计与实现
  • 旋转磁体产生的场 - 实验视频资源下载
  • 【Python 3.13】新特性解读,重大改进建议升级:JIT编译、免GIL,REPL、错误处理、类型系统等多个方面
  • Win7电脑IP地址查看与变换指南