当前位置: 首页 > 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.lryc.cn/news/596979.html

相关文章:

  • 华为云开发者空间 × DeepSeek-R1 智能融合测评:云端开发与AI客服的协同进化
  • (46)elasticsearch-华为云CCE无状态负载部署
  • 基于Dapr Sidecar的微服务通信框架设计与性能优化实践
  • python学智能算法(二十九)|SVM-拉格朗日函数求解中-KKT条件
  • 华为云中,列表中的镜像无法删除可能由多种原因导致
  • MybatisPlus操作方法详细总结
  • CNN实战案例:从图像识别到医疗诊断
  • 19-动态路由
  • QEMU RISCV TCG 详解二 -- RISCV CPU Representation
  • Axios 响应拦截器
  • AI 搜索引擎:让信息“长脑子”而不是“堆数据”
  • 【Spring Cloud Gateway 实战系列】基础篇:路由、断言、过滤器、负载均衡深度解析
  • 【服务器】 MCTP Over PCIe 的内容、用途、工作原理及硬件设计注意事项
  • 基于php的校园招聘平台
  • SpringCloudGateWay 使用nacos网关自动负载均衡
  • 二分查找-162.寻找峰值-力扣(LeetCode)
  • 思路探索:当大型语言模型遇见数据分析的现实挑战
  • 统一服务入口——Spring Cloud Gateway
  • 高亮匹配关键词样式highLightMatchString、replaceHTMLChar
  • Effective Python 第15条 不要过分依赖给字典添加条目时所用的顺序
  • CodeBuddy IDE实战:用AI全栈能力快速搭建课程表网页
  • JavaScript HTTP 请求:从老古董到新潮流
  • 在线深凹槽深检测方法都有哪些 —— 激光频率梳 3D 轮廓检测
  • 如何在Pico等Android头显中实现无人机低延迟RTMP全景巡检画面播放
  • 2025年7月份实时最新获取地图边界数据方法,省市区县街道多级联动【文末附实时geoJson数据下载】
  • 从零开始学习Dify-Excel数据可视化(四)
  • 无人机光伏巡检误检率↓78%!陌讯多模态融合算法实战解析
  • 【Android】用 ViewPager2 + Fragment + TabLayout 实现标签页切换
  • Android用户鉴权实现方案深度分析
  • react18更新哪些东西