leetcode73.矩阵置零

devtools/2025/4/2 6:36:10/

方法一:采用两个数组,行数组记录哪些行的所有元素需要全部置为0,列数组需要记录哪些列的所有元素需要全部置为0 

java">public class Solution {public void setZeroes(int[][] matrix) {boolean[] rowArr = new boolean[matrix.length];boolean[] colArr = new boolean[matrix[0].length];for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[0].length; j++) {if(matrix[i][j]==0){rowArr[i]=true;colArr[j]=true;}}}for (int i = 0; i < rowArr.length; i++)if(rowArr[i])for(int j=0;j<matrix[0].length;j++)matrix[i][j]=0;for(int j=0;j<colArr.length;j++)if(colArr[j])for (int i = 0; i < matrix.length; i++)matrix[i][j]=0;}
}

方法二:在方法一的基础上优化空间复杂度,用第一行和第一列代替方法一中的行数组和列数组,但是这样会导致第一行变动,结果错误,为此引入两个变量,一个记录第一行是否需要全部置为0,另一个记录第一列是否需要全部置为0 

java">public class Solution {public void setZeroes(int[][] matrix) {int m= matrix.length;int n=matrix[0].length;boolean rowZero=false,colZero=false;for (int[] ints : matrix) {if (ints[0] == 0) {colZero = true;break;}}for (int i = 0; i < n; i++) {if(matrix[0][i]==0){rowZero=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(rowZero)for (int i = 0; i < n; i++) {matrix[0][i]=0;}if(colZero)for (int i = 0; i < m; i++) {matrix[i][0]=0;}}
}

 

 


http://www.ppmy.cn/devtools/171884.html

相关文章

Chrome 开发环境快速屏蔽 CORS 跨域限制!

Chrome 开发环境快速屏蔽 CORS 跨域限制【详细教程】 ❓ 为什么需要临时屏蔽 CORS&#xff1f; 在前后端开发过程中&#xff0c;我们经常会遇到 跨域请求被浏览器拦截 的问题。例如&#xff0c;你在 http://localhost:3000 调用 https://api.example.com 时&#xff0c;可能会…

【C语言上机考试易忘知识汇总】

上机考试易忘知识汇总 一、第一弹1.1二次方程根1.2 打印菱形1.3 string.h之sscanf1.4 三个基础排序1.5 动态分配二维数组malloc1.6 一特定字符(#)结束1.7 字符串的插入1.8字符串的删除1.9字符串的匹配 二、第二弹几个数学知识2.1最大公约数2.2 最小公倍数2.3斐波那契2.4n的阶乘…

新书速览|MATLAB入门与应用实践:视频教学版

《MATLAB入门与应用实践:视频教学版》 01 本书内容 《MATLAB入门与应用实践:视频教学版》基于MATLAB R2024a编写&#xff0c;以MATLAB编程计算和仿真分析知识为主线&#xff0c;全面讲解MATLAB工程应用的各种方法和技巧&#xff0c;配套素材文件、结果文件、PPT课件、教学视频…

随笔记录:vue3+vite项目dist文件手动打包

vite对项目进行手动分包 记录一个在开发过程遇到的需求&#xff0c;对自己的项目build打包进行手动分包 项目概述&#xff1a;在一个vue项目中可能有多个不关联的模块内容&#xff0c;希望在build打包发布的时候对项目代码进行手动分包(按模块分) 要求&#xff1a; 1.希望项…

细胞内与细胞间网络整合分析!神经网络+细胞通讯,这个单细胞分析工具一箭双雕了(scTenifoldXct)

生信碱移 细胞间-细胞内通讯网络分析 scTenifoldXct&#xff0c;一种结合了细胞内和细胞间基因网络的计算工具&#xff0c;利用 scRNA-seq 数据检测细胞间相互作用。 单细胞 RNA 测序&#xff08;scRNA-seq&#xff09;能够以稳健且可重复的方式同时收集数万个细胞的转录组信息…

nara wpe去混响学习笔记

文章目录 1.WPE方法去混响的基本流程1.1.基本流程 2.离线迭代方法3.在线求法3.1.回顾卡尔曼方法3.2.在线去混响递推滤波器G方法 nara wpe git地址 博客中demo代码下载 参考论文 NARA - WPE: A Python Package for Weighted Prediction Error Dereverberation in Numpy and Ten…

赛逸展2025全新启航,深耕中国科技市场新沃土

在全球科技产业蓬勃发展的浪潮下&#xff0c;亚洲科技展会领域迎来重大变革。今日&#xff0c;组委会正式向外界宣告&#xff0c;自2025年起&#xff0c;启用全新中文品牌——“赛逸展”&#xff0c;矢志不渝地为中国市场量身定制更优质、更具针对性的科技交流平台&#xff0c;…

有时序协议与无时序协议区别(以RTU协议和TCP协议为例)RTU协议规定了严格时序要求:两个数据帧之间间隔时间必须在特定的范围内

文章目录 有时序协议与无时序协议1. **RTU通信**&#xff1a;2. **TCP协议**&#xff1a; 具体解释&#xff1a;RTU通信和TCP协议之间的时序差异RTU通信- **时序要求**- **应用场景** TCP协议- **无时序要求**- **应用场景** 举个例子- **RTU通信**- **TCP协议** 有时序协议与无…