73. 矩阵置零

简介: 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 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]

]


进阶:


   一个直接的解决方案是使用  O(mn) 的额外空间,但这并不是一个好的解决方案。

   一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。

   你能想出一个常数空间的解决方案吗?


javascript



/**
 * @param {number[][]} matrix
 * @return {void} Do not return anything, modify matrix in-place instead.
 */
var setZeroes = function (matrix) {
    var col = matrix.length;
    var row = matrix[0].length
    var c =new Set()
    var r =new Set()
    for (var i = 0; i < col; i++) {
        for (var j = 0; j < row; j++) {
            if (matrix[i][j] === 0) {
                c.add(i)
                r.add(j)
            }
        }
    }
    for (var i = 0; i < col; i++) {
        for (var j = 0; j < row; j++) {
            if (c.has(i) || r.has(j)) {
                matrix[i][j] =0
            }
        }
    }
    return matrix
};


python



class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        r,c = set(),set()
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j]==0:
                    r.add(i),c.add(j)
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if i in r or j in c:
                    matrix[i][j] =0
        return matrix
相关文章
|
7月前
|
算法 索引
leetcode-73:矩阵置零
leetcode-73:矩阵置零
34 0
|
4月前
|
存储 算法 NoSQL
LeetCode第73题矩阵置零
文章介绍了LeetCode第73题"矩阵置零"的解法,通过使用矩阵的第一行和第一列作为标记来记录哪些行或列需要置零,从而在不增加额外空间的情况下解决问题。
LeetCode第73题矩阵置零
|
7月前
|
存储 算法
73. 矩阵置零
73. 矩阵置零
|
算法 Java
算法-矩阵置零
算法-矩阵置零
|
7月前
|
算法 前端开发 测试技术
3033. 修改矩阵
3033. 修改矩阵
39 0
|
7月前
|
算法
算法题—顺时针打印矩阵
算法题—顺时针打印矩阵
50 0
出栈序列个数问题——用一个公式去解
出栈序列个数问题——用一个公式去解
352 0
出栈序列个数问题——用一个公式去解
判断上三角矩阵
判断上三角矩阵 (15 分)
126 0
计算整数n阶矩阵的主/副对角线元素之和并输出
计算整数n阶矩阵的主/副对角线元素之和并输出
计算整数n阶矩阵的主/副对角线元素之和并输出
|
算法
LeetCode 73矩阵置零&74搜素二维矩阵&75颜色分类
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。
131 0
LeetCode 73矩阵置零&74搜素二维矩阵&75颜色分类