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

【矩阵专题】Leetcode73.矩阵置零

矩阵置零

一、题目描述

原题链接: LeetCode 73. Set Matrix Zeroes

给你一个 m x n 的矩阵,如果某个元素为 0,则将其所在的整行整列都设为 0。

请你原地进行操作,尽量减少额外空间的使用。


二、示例

输入:

matrix = [[1, 1, 1],[1, 0, 1],[1, 1, 1]
]

输出:

[[1, 0, 1],[0, 0, 0],[1, 0, 1]
]

三、思路分析

使用一个标记数组来解决

思路:

  1. 首先遍历整个矩阵,如果某个元素为 0,我们就将它的所在行、列记录下来
  2. 再次遍历矩阵,如果当前元素的行或列被记录过,就将该位置设置为 0。

四、Java 代码实现

class Solution {public void setZeroes(int[][] matrix) {int n = matrix.length;int m = matrix[0].length;boolean[] row = new boolean[n]; // 标记哪一行要置0boolean[] col = new boolean[m]; // 标记哪一列要置0// 第一次遍历:记录所有为0的行和列for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (matrix[i][j] == 0) {row[i] = true;col[j] = true;}}}// 第二次遍历:根据标记置0for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (row[i] || col[j]) {matrix[i][j] = 0;}}}}
}

五、复杂度分析

  • 时间复杂度: O(m × n)
    两次完整遍历矩阵,总体是 O(m × n)
  • 空间复杂度: O(m + n)
    使用两个数组来记录行和列的标记信息。
http://www.dtcms.com/a/293886.html

相关文章:

  • 西门子 S7-1500分布式 I/O通信 :PROFINET IO 与 PROFIBUS DP详解(下)
  • 9、STM32的启动过程
  • Ubuntu系统下FFmpeg源码编译安装
  • 面试150 建立四叉树
  • 电脑32位系统能改64位系统吗
  • Linux下的lcd屏幕显示操作
  • 【前端】【Vue DevTools】Vue DevTools 进阶:用 Trae / Cursor 替换 VSCode 打开文件(跳转行列无误)
  • 直播一体机技术方案解析:基于RK3588S的硬件架构特性​
  • 7.23 减肥感悟
  • 为什么IMU是无人机稳定控制的的核心?
  • 深入解析Hive SQL转MapReduce的编译原理:从AST抽象语法树到Operator执行树
  • 无人机光伏巡检误检率↓78%!陌讯多模态融合算法实战解析
  • 【趣味解读】淘宝登录的前后端交互机制:Cookie-Session 如何保障你的账户安全?
  • 【网络编程】二、socket编程
  • 趣玩-Ollama-Llm-Chatrbot
  • 前端开发 React 状态优化
  • readelf -d a.out | vim - 和 readelf -d a.out | vim 有什么区别?
  • PyTorch武侠演义 第一卷:初入江湖 第5章:玉如意的秘密
  • gig-gitignore工具实战开发(一):项目愿景与蓝图规划
  • C Primer Plus 第6版 编程练习——第10章(上)
  • 漫画机器学习播客对话图文版
  • TGD第二篇:破局——去除导数计算中的无穷小极限
  • CodeBuddy IDE实战:用AI全栈能力快速搭建课程表网页
  • 【机器学习深度学习】比较 LLaMA-Factory、vLLM 和 LMDeploy 的量化导出:为何 LLaMA-Factory 不是首选?
  • 2025暑期—06神经网络-常见网络3
  • UWA DAY 2025 游戏开发者大会|全议程
  • Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
  • Python进阶知识之pandas库(一)基础数据类型
  • 论文略读:REMEDY: RECIPE MERGING DYNAMICS IN LARGE VISION-LANGUAGE MODELS
  • 深入解析预训练语言模型在文本生成中的革命性应用:技术全景与未来挑战