难度中等46收藏分享切换为英文接收动态反馈
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
示例 1:
输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ]
示例 2:
输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5] ] 输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0] ]
因为对js不是很熟练,所以写的时候出了问题,发现一个数组赋值给另一个数组的时候,其中一个数组改变,另一个数组也会变化。B=A的方式只是将B指向A的存储地址,实际上只有同一份数据,因此无论修改A还是B都是会互相影响的。所以想要实现这个一个数组等于另一个数组,而地址不一样的话,要用一点方法。
B = JSON.parse(JSON.stringify(A))
先用JSON.stringify(A)把A解析成字符串,然后用JSON.parse()把解析出的字符串转换成JSON对象,这样可以让B获得和A相等的数据,但是修改B也不会影响A
代码如下:
执行用时:100 ms, 在所有 JavaScript 提交中击败了32.99%的用户
内存消耗:40.7 MB, 在所有 JavaScript 提交中击败了25.89%的用户
通过测试用例:159 / 159
var setZeroes = function(matrix) {
let b=JSON.parse(JSON.stringify(matrix))
for(let i=0;i<matrix.length;i++){
for(let j=0;j<matrix[0].length;j++){
if(b[i][j]==0){
for(let k=0;k<matrix[0].length;k++){
matrix[i][k]=0
}
for(let l=0;l<matrix.length;l++){
matrix[l][j]=0
}
}
}
}
return matrix
};