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

    相关文章:

  • android 四大组件—BroadcastReceiver
  • 《深入理解双向链表:增删改查及销毁操作》
  • 贪吃蛇鱼小游戏抖音快手微信小程序看广告流量主开源
  • 架构性能优化三板斧:从10秒响应到毫秒级的演进之路
  • VSCode+MobaXterm+X11可视化界面本地显示
  • pydantic定义llm response数据模型
  • A股大盘数据-20250905 分析
  • HPL2.3安装
  • 期权卖方的收益和损失如何计算?
  • K8S删除命名空间卡住一直Terminating状态
  • 【小白笔记】命令不对系统:无法将‘head’项识别为 cmdlet、函数、脚本文件或可运行程序的名称
  • 【GEOS-Chem 输入数据】使用 AWS CLI 访问 GEOS-Chem 数据
  • LangChain实战(十六):构建基于SQL数据库的数据分析Agent
  • 深度学习——残差神经网路
  • 鸿蒙NEXT自定义能力详解:从基础使用到高级技巧
  • IDE mac M芯片安装报错:如何解决“InsCode.app 已损坏”,无法打开
  • 从零开始:用uv构建并发布一个Python CLI应用,集成CI/CD自动化发布与Docker容器化部署
  • 码农的“必修课”:深度解析Rust的所有权系统(与C++内存模型对比)
  • PCDN双系统赋能企业
  • LeetCode 2749.得到整数零需要执行的最少操作数:很独特的一道数学题(多公式硬讲——一步步还真能看懂)
  • 计算机网络7 第七章 网络安全
  • Graphpad 绘图(二):小鼠生存曲线绘制与数据记录分析详解
  • Windows 部署 Gerrit 与 Apache24 配置
  • 【传奇开心果系列】Flet框架实现的搜索引擎搜索关键词建议提示和自动完成自定义组件模板特色和实现原理深度解析
  • 无人机小目标检测新SOTA:MASF-YOLO重磅开源,多模块协同助力精度飞跃
  • [特殊字符] 香蕉超市|Nano Bananary|ZHO|已开源
  • 大数据毕业设计选题推荐-基于大数据的分化型甲状腺癌复发数据可视化分析系统-Spark-Hadoop-Bigdata
  • 85 printk 输出丢失数据
  • 分布式专题——1.1 Redis单机、主从、哨兵、集群部署
  • 解决 Apache/WAF SSL 证书链不完整导致的 PKIX path building failed 问题