美文网首页
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