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

力扣题解(73. 矩阵置零),带注释

题目描述

链接:点我

题解

//法一  使用hashset记录有0的横纵坐标即可
class Solution {public void setZeroes(int[][] matrix) {HashSet<Integer> row = new HashSet<Integer>();HashSet<Integer> col = new HashSet<Integer>();for(int i = 0;i < matrix.length;i++){for(int j = 0;j < matrix[i].length;j++){if(matrix[i][j] == 0){row.add(i);col.add(j);}}}//更新for(int i = 0;i < matrix.length;i++){for(int j = 0;j < matrix[i].length;j++){if(row.contains(i) || col.contains(j)){matrix[i][j] = 0;}}}}
}//法二,我也是看了题解才明白orz.......  此法的空间复杂度更小O(1)
class Solution {public void setZeroes(int[][] matrix) {int m = matrix.length , n = matrix[0].length;int flag = 0;  //标记第0列是否有0,有为1for(int i = 0;i < m;i++){if(matrix[i][0] == 0) flag = 1;for(int j = 1;j < n;j++){//通过其他列更新第0列,其他行更新第0行if(matrix[i][j] == 0) matrix[i][0] = matrix[0][j] = 0; }}for(int i = m-1;i >= 0;i--){//防止每一列的第一个元素被提前更新,倒着遍历for(int j = 1;j < n;j++){ //注意这里是从1开始if(matrix[i][0] == 0 || matrix[0][j] == 0) matrix[i][j] = 0;}}if(flag == 1){  //更新第0列for(int i =0;i < m; i++) matrix[i][0] = 0;}}
}
http://www.lryc.cn/news/161703.html

相关文章:

  • SpringMVC应用
  • 百度输入法全面升级,打造首个基于大模型的输入法原生应用
  • 如何解决GitHub 访问不了?小白教程
  • 龙芯指令集LoongArch——学习笔记(1)
  • ubuntu 20.04 docker安装emqx 最新版本或指定版本
  • 软件测试/测试开发丨学会与 AI 对话,高效提升学习效率
  • CEF内核和高级爬虫知识
  • 视频集中存储/云存储/磁盘阵列EasyCVR平台分组批量绑定/取消设备功能详解
  • 科技成果鉴定测试报告一般包含哪些测试内容?
  • IDEA中的“Deployment“ 将项目直接部署到服务器上
  • 密室逃脱小游戏
  • 【MyBatis】MyBatis项目结构的搭建
  • Vant组件库入门知识
  • Java字符串查找
  • 2023年7月京东投影仪行业品牌销售排行榜(京东大数据)
  • 设计模式-01简单工厂模式详解 详细代码对比
  • IPD-PDT-POP角色的名称、定位和职责说明书
  • 在MySQL中查看数据库和表的数据大小
  • Android前端音视频数据接入GB28181平台意义
  • Ubuntu 20.04上docker安装Redis
  • linux 压缩webfile文件夹 webfile.tar.gz和webfile.tar的区别
  • 基于SSM的农产品推广应用网站
  • 人大金仓分析型数据库身份鉴别
  • 基于SpringBoot的在线教育平台系统
  • 基于大规模测量和多任务深度学习的电子鼻系统目标识别、浓度预测和状态判断
  • Unity游戏客户端进阶路线(只针对本人)
  • 【C++】封装map和set(红黑树实现)
  • 【补】代码随想录算法训练营day38|动态规划 |509. 斐波那契数|70. 爬楼梯|746. 使用最小花费爬楼梯
  • C语言sizeof()计算空间大小为8的问题
  • 时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化