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

LeetCode -Hot100 - 73. 矩阵置零

前言

本专栏主要通过“LeetCode 热题100”,来捡起自己本科阶段的算法知识与技巧。语言主要使用c++/java。如果同样正在练习LeetCode 热题100的朋友欢迎关注或订阅本专栏。有疑问欢迎留言交流~

题目描述

题目链接
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
在这里插入图片描述

思路

最开始我不知道什么是“原地算法”。gpt给的答复是:原地算法(In-place algorithm)是指在执行算法时不需要额外的存储空间,或者只需要常数级别的额外存储空间的算法。换句话说,算法的输入数据被直接修改以产生输出结果,而不需要创建额外的数据结构来存储输出结果或中间结果。
如果只是不用额外的数组来存储二维数组,不难。只要发现一个0然后对当前的数组的行列赋值0就好,但需要注意不要把后面没有开始判断的数字给赋值0了。既然怕前面的赋值操作影响后面的数组,其实完全可以用数组记录下来哪些行和列要归0。然后最后统一来赋值0就好。

Java代码如下:

class Solution {
    public void setZeroes(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        boolean[] row = new boolean[m];
        boolean[] col = new boolean[n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                //发现0
                if (matrix[i][j] == 0) {
                    row[i] = col[j] = true;//只需要记录下来这些row 和 col为true
                }
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (row[i] == true || col[j] == true) {
                    matrix[i][j] = 0;
                }
            }
        }
    }
}

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

相关文章:

  • uni-app 页面生命周期及组件生命周期汇总(Vue2、Vue3)
  • opencv CV_TM_SQDIFF未定义标识符
  • python学习笔记—13—while和for循环
  • 安徽省乡镇界面图层+arcgis数据shp格式-乡镇名称和编码2020年+wgs84坐标内容测评
  • 前端小案例——520表白信封
  • 30分钟学会css
  • 瑞吉外卖项目学习笔记(十)修改套餐、删除套餐、起售和停售套餐
  • 云原生监控与日志管理:确保云原生应用的可靠性与性能
  • Spring MVC和servlet
  • 【2025最新计算机毕业设计】基于SSM的医院挂号住院系统(高质量源码,提供文档,免费部署到本地)【提供源码+答辩PPT+文档+项目部署】
  • 西安电子科技大学初/复试笔试、面试、机试成绩占比
  • 初学stm32 --- RTC实时时钟
  • Pytest钩子函数,测试框架动态切换测试环境
  • 《Rust权威指南》学习笔记(二)
  • Node.js中使用Joi 和 express-joi-validation进行数据验证和校验
  • Win32汇编学习笔记04.重定位与汇编引擎
  • ubuntu 创建服务、查看服务日志
  • Linux-Ubuntu之RTC实时时钟显示
  • 使用 ThinkPHP 和 Vue.js 开发现代 Web 应用的指南
  • Swift Protocols(协议)、Extensions(扩展)、Error Handling(错误处理)、Generics(泛型)
  • c++第13课
  • VisualRules规则引擎语法介绍
  • Structured-Streaming集成Kafka
  • vue3组件化开发优势劣势分析,及一个案例
  • spring mvc源码学习笔记之二
  • 在 C# 中合并和解析相对路径