今日算法--零矩阵(中等难度)
题目: 编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
力扣 给出了三种方法,但是第二种方法比较复杂,并且不容易理解,可以放弃;第三种方法我看官网说是简单的,但是看它给出的思路,仍然不是很明白;所以我只把我学会的思路方法整理了一下
示例:
输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ]
思路:利用额外的空间
- 首先遍历整个数组list,记录元素为0的位置row,column;
- 然后再次遍历该数组,如果该行/列在标记的位置,则将其设置为0
var setZeroes = function (list) {
let column = [] , row = []
for (let i = 0; i < list.length; i++) {
let item = list[i]
for (let j = 0; j < item.length; j++) {
if (item[j] === 0) {
row.push(i)
column.push(j)
}
}
}
for (let i = 0; i < list.length; i++) {
let item = list[i]
for (let j = 0; j < item.length; j++) {
if (row.includes(i) || column.includes(j)) {
list[i][j] = 0
}
}
}
return list
}
console.log(setZeroes(list))