162. 矩阵归零

162. 矩阵归零

中文English

给定一个m×n矩阵,如果一个元素是0,则将其所在行和列全部元素变成0。

需要在原矩阵上完成操作。

样例

样例 1:

输入:[[1,2],[0,3]]
输出:[[0,2],[0,0]]

样例 2:

输入:[[1,2,3],[4,0,6],[7,8,9]]
输出:[[1,0,3],[0,0,0],[7,0,9]]

挑战

你是否使用了额外的空间?
一个直接的解决方案是使用 O(MN) 的额外空间,但这并不是一个好的方案。
一个简单的改进方案是使用 O(M + N) 的额外空间,但这仍然不是最好的解决方案。
你能想出一个常数空间的解决方案吗? 

输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param matrix: A lsit of lists of integers
    @return: nothing
    """
    '''
    大致思路:
    1.循环,得到所有为0的元素,初始化m_dic = [],n_dic = [],然后根据m和d进行置0,返回
    '''
    def  setZeroes(self, matrix):
        m_dic,n_dic = [],[]
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == 0:
                    m_dic.append(i)
                    n_dic.append(j)
        
        for m in m_dic:
            matrix[m] = [0]*len(matrix[0])
        
        for n in n_dic:
            for z in range(len(matrix)):
                matrix[z][n] = 0
        return matrix

 

posted @ 2020-05-10 17:52  风不再来  阅读(251)  评论(0编辑  收藏  举报