美文网首页
73. Set Matrix Zeroes

73. Set Matrix Zeroes

作者: poteman | 来源:发表于2019-07-19 18:30 被阅读0次
    class Solution(object):
        def setZeroes(self, matrix):
            """
            :type matrix: List[List[int]]
            :rtype: None Do not return anything, modify matrix in-place instead.
            """
    
            # 思路:
            # corner case: matrix为空,matrix是行向量/列向量
            # 1.判断第一行、第一列是否包含0,存在firstrow和firstcolumn中(False/True)
            # 2.从(1,1)开始遍历,如果发现元素为0,将对应行的第一个元素和对应列的第一个元素置为0
            # 3.遍历第一行,如果元素为0,将这一列的元素置为0
            # 4.遍历第一列,如果元素为0,将这一行的元素置为0
            # 5.根据firstrow和firstcolumn将矩阵的第一行和第一列置为0
    
            if len(matrix) == 0:
                return matrix
            n = len(matrix[0])
            m = len(matrix)
            if m == 1:
                for j in range(n):
                    if matrix[0][j] == 0:
                        for j in range(n):
                            matrix[0][j] = 0
                        return matrix
            if n == 1:
                for i in range(m):
                    if matrix[i][0] == 0:
                        for i in range(m):
                            matrix[i][0] = 0
                        return matrix
    
            firstrow = False
            for j in range(n):
                if matrix[0][j] == 0:
                    firstrow = True
                    break
    
            firstcolumn = False
            for i in range(m):
                if matrix[i][0] == 0:
                    firstcolumn = True
                    break
    
            for i in range(1, m):
                for j in range(1, n):
                    if matrix[i][j] == 0:
                        matrix[0][j] = 0
                        matrix[i][0] = 0
            for i in range(1, m):
                if matrix[i][0] == 0:
                    for j in range(1, n):
                        matrix[i][j] = 0
            for j in range(1, n):
                if matrix[0][j] == 0:
                    for i in range(1, m):
                        matrix[i][j] = 0
            if firstrow:
                for j in range(n):
                    matrix[0][j] = 0
            if firstcolumn:
                for i in range(m):
                    matrix[i][0] = 0
    
            return matrix
    

    相关文章

      网友评论

          本文标题:73. Set Matrix Zeroes

          本文链接:https://www.haomeiwen.com/subject/ifaslctx.html