LeetCode--Set matrix zeros

来源:互联网 发布:大主宰礼包兑换码 淘宝 编辑:程序博客网 时间:2024/05/16 17:54

题目:

给定一个数组matrix(m*n),若某个位置值为0,则将该行该列的值都设为0

思路:

最直接的想法是,直接对数组进行遍历,遇到0则将该行该列都置0.但这样会导致重复和混乱。

再想到重新建立一个矩阵,新矩阵的值来记录该位置是原值还是0,但比较浪费空间O(m*n)。

考虑空间后,新建立一个O(m+n)的向量,用来存储对应行和列是否置零O(m+n)。

再考虑用首行和首列来存储对应行和列是否置零。而首行首列是否置零存储在外部连个变量里O(1).


代码(python):

class Solution(object):    def setZeroes(self, matrix):        """        :type matrix: List[List[int]]        :rtype: void Do not return anything, modify matrix in-place instead.        """        row = 1        col = 1        for i in range(len(matrix)):            if matrix[i][0]==0:                col = 0                break        for j in range(len(matrix[0])):            if matrix[0][j]==0:                row = 0                break                        for i in range(len(matrix)):            for j in range(len(matrix[0])):                if matrix[i][j]==0:                    matrix[0][j] = 0                    matrix[i][0] = 0                for i in range(len(matrix)-1):            for j in range(len(matrix[0])-1):                if matrix[0][j+1]==0 or matrix[i+1][0]==0:                    matrix[i+1][j+1] = 0                for i in range(len(matrix)):            if col==0:                matrix[i][0]=0        for j in range(len(matrix[0])):            if row==0:                matrix[0][j] = 0

原创粉丝点击