2026/4/6 5:43:02
网站建设
项目流程
深圳企业公司网站设计,怎么查个人是否注册工商执照,公众号开发制作,企业网站的概念目录
矩阵置零
螺旋矩阵 矩阵置零
73. 矩阵置零 - 力扣#xff08;LeetCode#xff09;
法一#xff1a;
引入两个HashSet容器#xff0c;分别记录元素为0的横坐标与纵坐标
空#xff1a;O#xff08;MN#xff09;
代码 class Solution_2026_1_26_1 {int m;int …目录矩阵置零螺旋矩阵矩阵置零73. 矩阵置零 - 力扣LeetCode法一引入两个HashSet容器分别记录元素为0的横坐标与纵坐标空OMN代码class Solution_2026_1_26_1 { int m; int n; public void setZeroes(int[][] matrix) { SetInteger row_zeronew HashSet(); SetInteger col_zeronew HashSet(); mmatrix.length; nmatrix[0].length; for(int i0;im;i){ for(int j0;jn;j){ if(matrix[i][j]0){ row_zero.add(i); col_zero.add(j); } } } for(int i0;im;i){ for(int j0;jn;j){ //Set无get方法 if(row_zero.contains(i)||col_zero.contains(j)){ matrix[i][j]0; } } } } }优化空间复杂度优化为O(1)重点区分第一行和第一列的0是本身就是0还是被修改为0的class Solution { public void setZeroes(int[][] matrix) { //进行优化 空间复杂度降低为O(1) boolean hasRowZerofalse; boolean hasColZerofalse; int mmatrix.length; int nmatrix[0].length; //检查第一行是否有为0的 for(int i0;in;i){ //检查第一行是否为空 //但本质上第一行处理的是列 if(matrix[0][i]0){ hasRowZerotrue; break; } } for(int i0;im;i){ //检查第一列是否为空 //但本质上第一列处理的是行 if(matrix[i][0]0){ hasColZerotrue; break; } } //遍历二维数组 进行标记 for(int i1;im;i){ for(int j1;jn;j){ if(matrix[i][j]0){ matrix[0][j]0; matrix[i][0]0; } } } for(int i1;im;i){ for(int j1;jn;j){ if(matrix[0][j]0||matrix[i][0]0){ matrix[i][j]0; } } } //单独处理第一行为0的情况 if(hasRowZero){ for(int i0;in;i){ matrix[0][i]0; } } if(hasColZero){ for(int i0;im;i){ matrix[i][0]0; } } } }螺旋矩阵54. 螺旋矩阵 - 力扣LeetCode个人认为关键点就是理清除过程先从左往右处理上边界然后从上往下处理右边界然后从右往左处理下边界最后在从下往上处理左边界即可理清楚过程即可class Solution { public ListInteger spiralOrder(int[][] matrix) { int mmatrix.length; int nmatrix[0].length; ListInteger retnew ArrayList(); int left0; int rightn-1; int top0; int bottomm-1; while(leftrighttopbottom){ for(int ileft;iright;i){ ret.add(matrix[top][i]); //从左往右处理 } top; //从上往下 for(int itop;ibottom;i){ ret.add(matrix[i][right]); //从下往上处理 } right--; //从后往前 if(topbottom){ for(int iright;ileft;i--){ //从后往前 ret.add(matrix[bottom][i]); } //从下往上 bottom--; } if(leftright){ for(int ibottom;itop;i--){ ret.add(matrix[i][left]); } //从前往后 left; } } return ret; } }