论坛网站模板免费下载,网站分享的功能怎么做的,盘锦做网站谁家好,网站营销建设公司文章目录 1、问题2、示例3、解决方法#xff08;1#xff09;方法1——标记数组 1、问题 给定一个 y x x 的矩阵#xff0c;如果一个元素为 0 #xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 2、示例 示例 1#xff1a; 输入#xff1a;matrix [[… 文章目录 1、问题2、示例3、解决方法1方法1——标记数组 1、问题 给定一个 y x x 的矩阵如果一个元素为 0 则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 2、示例 示例 1 输入matrix [[1,1,1],[1,0,1],[1,1,1]] 输出[[1,0,1],[0,0,0],[1,0,1]] 111 101 101 000 111 101 示例 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]] 0120 0000 3452 0450 1215 0310 3、解决方法
1方法1——标记数组 思路 1:用两个标记数组分别记录每一行和每一列是否有零出现。 2:遍历该数组一次如果某个元素为 0那么就将该元素所在的行和列所对应标记数组的位置置为 true 3:最后我们再次遍历该数组用标记数组更新原数组即可。 let matrix [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
var setZeroes function(matrix) {// 1:获取xy轴的长度let y matrix.length; // 1-1二维数组的长度(矩阵y轴的长度)let x matrix[0].length; // 1-2一维数组的长度矩阵x轴的长度// 2获取行和列的长度注意行的长度由列决定let row new Array(y).fill(false); // 2-1: 行(行的长度是列的多少决定的如示例二有四列行为4)let col new Array(x).fill(false); // 2-2: 列(列的长度是行的多少决定的如示例二有三行列为3)// 3双层遍历该数组如果其中有一个元素为0将当前的行和列改为truefor(let i 0;iy;i){for(let j 0;jx;j){if(matrix[i][j] 0){row[i] col[j] true}}}// 4再次双层循环该数组将之前标记为true的数据设置为0for(let i 0;iy;i){for(let j 0;jx;j){if(row[i] || col[j]){matrix[i][j] 0}}}// 5输出结果console.log(zz, matrix);
};