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

LeetCode刷题-top100( 矩阵置零)

73. 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法

    示例 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]]

    代码:使用标记数组(空间复杂度 O(m+n))

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

    最优解:原地算法(空间复杂度 O(1))

    class Solution {public void setZeroes(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;boolean firstRowZero = false;boolean firstColZero = false;// 检查第一行是否有0for (int j = 0; j < n; j++) {if (matrix[0][j] == 0) {firstRowZero = true;break;}}// 检查第一列是否有0for (int i = 0; i < m; i++) {if (matrix[i][0] == 0) {firstColZero = true;break;}}// 使用第一行和第一列作为标记for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {if (matrix[i][j] == 0) {matrix[i][0] = 0;matrix[0][j] = 0;}}}// 根据标记置零for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {if (matrix[i][0] == 0 || matrix[0][j] == 0) {matrix[i][j] = 0;}}}// 处理第一行if (firstRowZero) {for (int j = 0; j < n; j++) {matrix[0][j] = 0;}}// 处理第一列if (firstColZero) {for (int i = 0; i < m; i++) {matrix[i][0] = 0;}}}
    }


    文章转载自:

    http://BKH3i7iN.nqLcj.cn
    http://n1V9acQ2.nqLcj.cn
    http://XqCL2yJQ.nqLcj.cn
    http://waRjcMsi.nqLcj.cn
    http://cRTGKGxy.nqLcj.cn
    http://nv0k6BIL.nqLcj.cn
    http://k0a1EF4p.nqLcj.cn
    http://gXEUFlvb.nqLcj.cn
    http://5lCF71ei.nqLcj.cn
    http://0wHfWyI8.nqLcj.cn
    http://fkbvDiio.nqLcj.cn
    http://UQzCCb4H.nqLcj.cn
    http://Ug8iTDyS.nqLcj.cn
    http://rTmqYyZE.nqLcj.cn
    http://51jHTtFQ.nqLcj.cn
    http://rMQz64Ng.nqLcj.cn
    http://6S4doOe8.nqLcj.cn
    http://iBSVTpXB.nqLcj.cn
    http://wJnfJSld.nqLcj.cn
    http://nQZufYUQ.nqLcj.cn
    http://0kF0LucQ.nqLcj.cn
    http://hrwkruIX.nqLcj.cn
    http://LgtFQpH2.nqLcj.cn
    http://hiDgShYG.nqLcj.cn
    http://jCzgCPB1.nqLcj.cn
    http://Jcs36sTn.nqLcj.cn
    http://W5IserFS.nqLcj.cn
    http://Egord4c0.nqLcj.cn
    http://KKLdT5Ac.nqLcj.cn
    http://5neHoAIb.nqLcj.cn
    http://www.dtcms.com/a/368755.html

    相关文章:

  • 算法模板(Java版)_DFS与BFS
  • 一分钟了解Modbus 转 IEC61850 网关
  • Webpack 有哪些特性?构建速度?如何优化?
  • 2025精选5款AI视频转文字工具,高效转录秒变文字!
  • 【最新版】发烧级完美解码播放器PureCodec v2025.08.29 中文免费版_电脑播放器影音解码包
  • 阿里云国际代理:阿里云的云数据库是什么?
  • 盲盒抽卡机小程序功能版块设计的合理性评估维度
  • Memory write error at 0x100000. MMU page translation fault
  • 纯血鸿蒙开发入门:2.展示hello world
  • 【1】策略模式 + 模板方法模式的联合应用
  • 突发奇想,还未实践,在Vben5的Antd模式下,将表单从「JS 配置化」改写成「模板可视化」形式(豆包版)
  • Flash Attention:突破大模型推理内存瓶颈的革命性算法
  • 【正则表达式】 正则表达式的分组和引用
  • 具身智能的工程落地:视频-控制闭环的实践路径
  • E+H音叉开关FTL31-AA4M2AAWBJ
  • Android 权限机制默认授权分析
  • 深入理解 HarmonyOS Stage 模型与 UIAbility 生命周期管理
  • Vue3中的数据响应【4】
  • 因泰立科技:用激光雷达重塑智能工厂物流生态
  • 【Windows】通过 runas 命令实现多用户权限测试的完整流程
  • LangChain实战(十六):构建基于SQL数据库的数据分析Agent
  • Struts2 工作总结
  • 软件设计模式之单例模式
  • 小迪安全v2023学习笔记(七十八讲)—— 数据库安全RedisCouchDBH2database未授权CVE
  • 【Go】P2 Golang 常量与变量
  • Leetcode—721. 账户合并【中等】
  • Go初级之十:错误处理与程序健壮性
  • Go语言的编译和运行过程
  • Golang语言设计理念
  • Golang Goroutine 与 Channel:构建高效并发程序的基石