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

LeetCode 第73题:矩阵置零

给定一个m*n的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0,请使用原地算法。(在计算机科学中,一个原地算法(in-place algorithm)是一种使用小的,固定数量的额外之空间来转换资料的算法。当算法执行时,输入的资料通常会被要输出的部分覆盖掉。不是原地算法有时候称为非原地(not-in-place)或不得其所(out-of-place)。)

示例1:

输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]

示例2:

输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

提示:

  • m == matrix.length
  • n == matrix[0].length
  • 1 <= m, n <= 200
  • -2的31次 <= matrix[i][j] <= 2的31次 - 1

进阶:

  • 一个直观的解决方案是使用  O(mn) 的额外空间,但这并不是一个好的解决方案。
  • 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
  • 你能想出一个仅使用常量空间的解决方案吗?

解题思路:

使用两个标记数组分布记录每一行和每一列是否有零出现。

 首先遍历该数组一次,如果某个元素为0,那么就将该元素所在的行和列所对应标记数组的位置置为true。最后再次遍历该数组,用标记数组更新原数组。

void setZeroes(int** matrix, int matrixSize, int* matrixColSize) {int m = matrixSize,n=matrixColSize[0],row[m],col[n];memset(row,0,sizeof(row));memset(col,0,sizeof(col));for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(!matrix[i][j])  row[i]=col[j]=true;}}for(int i=0;i<m;i++)for(int j=0;j<n;j++)if(row[i] || col[j])matrix[i][j]=0;
}

时间复杂度:O(mn),其中 m 是矩阵的行数,n 是矩阵的列数。我们至多只需要遍历该矩阵两次。

空间复杂度:O(m+n),其中 m 是矩阵的行数,n 是矩阵的列数。我们需要分别记录每一行或每一列是否有零出现。

http://www.xdnf.cn/news/1030861.html

相关文章:

  • 区块链与人工智能的融合:从信任到智能的IT新引擎
  • JUC核心解析系列(五)——执行框架(Executor Framework)深度解析
  • ELK 日志分析系统深度解析与实战指南
  • 使用预训练卷积神经模型进行分类(MATLAB例)
  • MaxCompute的Logview分析详解
  • 仿飞书部门选择器
  • 二维码识别深度解析
  • 大模型笔记1:大致了解大模型
  • Burgers方程初值问题解的有效区域
  • JVM 参数调优核心原则与常用参数
  • 【无标题】在 4K 高分辨率(如 3840×2160)笔记本上运行 VMware 虚拟机时平面太小字体太小(ubuntu)
  • 如何在 ArcGIS 中使用 Microsoft Excel 文件_20250614
  • 【软测】node.js辅助生成测试报告
  • 写作词汇积累(A):颇有微词、微妙(“微”字的学习理解)
  • Veeam Backup Replication系统的安装与使用
  • ABP vNext 多语言与本地化:动态切换、资源继承与热更新
  • webuploader分片上传示例,服务端上传文件到腾讯云CDN Teo 应用示例
  • React 第三方状态管理库的比较与选择
  • 后端通过nignx代理转发,提供接口供前端在防火墙外访问
  • 计算机网络-自顶向下—第一章概述重点复习笔记
  • AI应用:计算机视觉相关技术总结
  • Elasticsearch从安装到实战、kibana安装以及自定义IK分词器/集成整合SpringBoot详细的教程ES(四)查询、排序、分页、高亮
  • 打卡Day53
  • 2025虚幻5蓝图编辑器的细节面板调不出来
  • MySQL-DQL数据查询语句深度解析与实战指南
  • 使用docker中的ollama
  • Python实战应用-Python操作MySQL数据库
  • 雪豹速清APP:高效清理,畅享流畅手机体验
  • python打卡day53@浙大疏锦行
  • DAY 53 对抗生成网络