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

leetcode-73.矩阵置零-day5

class Solution {public void setZeroes(int[][] mat) {int m = mat.length, n = mat[0].length;// 1. 扫描「首行」和「首列」记录「首行」和「首列」是否该被置零boolean r0 = false, c0 = false;for (int i = 0; i < m; i++) {if (mat[i][0] == 0) {r0 = true;break;}}for (int j = 0; j < n; j++) {if (mat[0][j] == 0) {c0 = true;break;}}// 2.1 扫描「非首行首列」的位置,如果发现零,将需要置零的信息存储到该行的「最左方」和「最上方」的格子内for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {if (mat[i][j] == 0) mat[i][0] = mat[0][j] = 0;}}// 2.2 根据刚刚记录在「最左方」和「最上方」格子内的置零信息,进行「非首行首列」置零for (int j = 1; j < n; j++) {if (mat[0][j] == 0) {for (int i = 1; i < m; i++) mat[i][j] = 0;}}for (int i = 1; i < m; i++) {if (mat[i][0] == 0) Arrays.fill(mat[i], 0);}// 3. 根据最开始记录的「首行」和「首列」信息,进行「首行首列」置零if (r0) for (int i = 0; i < m; i++) mat[i][0] = 0;if (c0) Arrays.fill(mat[0], 0);}
}

 自己实现:

public void setZeroes(int[][] matrix) {/*思路:* 1.如果先操作前面的元素则会对后面元素覆盖从而造成影响,则可以考虑存储。* 2.采取原地O(1)操作,则可以考虑存储到行首和列首* 3.特殊情况,只有一行或一列* 4.注意[0][0]这个相交位置* */boolean rowHead = false;boolean columnHead = false;int r = matrix.length;int c = matrix[0].length;for (int i = 0; i < r; i++) {if (matrix[i][0] == 0) {rowHead = true;}}for (int i = 0; i < c; i++) {if (matrix[0][i] == 0) {columnHead = true;}}//要考虑特殊情况if(r>=2&&c>=2){for (int i = 0; i < r; i++) {for (int j = 1; j < c; j++) {if(matrix[i][j]==0){matrix[i][0]=0;matrix[0][j]=0;}}}}//注意开始扫描行首和列首时,i,j应该从1开始,不然会影响后续判断(跳过[0][0])for (int j = 1; j < c; j++) {if(matrix[0][j]==0){for (int i = 0; i < r; i++) {matrix[i][j]=0;}}}for (int i = 1; i < r; i++) {if(matrix[i][0]==0){for (int j = 0; j < c; j++) {matrix[i][j]=0;}}}if(rowHead){for (int i = 0; i < r; i++) {matrix[i][0]=0;}}if(columnHead){for (int i = 0; i < c; i++) {matrix[0][i]=0;}}}

http://www.lryc.cn/news/504045.html

相关文章:

  • CSS学习记录13
  • CAD图纸加密软件哪个最好用 | 安全可靠的解决方案
  • 基于SSM+Vue的宠物医院管理系统
  • 处理VUE框架中,ElementUI控件u-table空值排序问题
  • 专业140+总分400+北京理工大学826信号处理导论考研经验北理工电子信息与通信工程,真题,大纲,参考书。
  • Rocky DEM tutorial5_Drop Weight test_落锤试验
  • C#,在 C# 语言中将 LaTeX 转换为 PNG 或 JPG 图像
  • Elasticsearch:Mapping-映射
  • 安装Tensorflow@FreeBSD(失败)
  • API接口示例:电商商品评论数据
  • 使用idea创建一个JAVA WEB项目
  • 解决MyBatis在 Oracle 中使用 IN 语句不能超过 1000 问题
  • 最长递增子序列两种算法实现(动态规划,二分查找)
  • Deepmotion技术浅析(三):特征提取
  • 国内CentOS使用yum安装docker和docker-compose
  • python学opencv|读取图像(十三)BGR图像和HSV图像互相转换深入
  • 【鸿蒙实战开发】数据的下拉刷新与上拉加载
  • 面向对象设计规则和各类设计模式
  • 《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(六)
  • 利用Docker分层构建优化镜像大小
  • Spring 魔法探秘:从 Bean 线程安全到事务魔法全解析
  • [Maven]IDEA父工程创建子工程后父工程不可运行
  • 【系统移植】在开发板上加载内核和根文件系统的三种方法
  • #渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍02-基于错误消息的SQL注入(Error-Based SQL Injection)
  • 数据结构-排序(来自于王道)
  • 【蓝桥杯选拔赛真题93】Scratch青蛙过河 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析
  • ReactPress最佳实践—搭建导航网站实战
  • Hive-4.0.1数据库搭建(可选配置用户名密码远程连接)
  • P8772 求和 P8716 回文日期
  • MySQL迁移SQLite