矩阵置零(零矩阵)--JavaScript版本

638 阅读1分钟

今日算法--零矩阵(中等难度)

题目: 编写一种算法,若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))