力扣-73:矩阵置零

刷力扣热题–第八天:73:矩阵置零
菜鸟第八天开始奋战敲代码,持之以恒,见证成长

1.题目简介

在这里插入图片描述
在这里插入图片描述

2.题目解答

这道题,题目说需要使用原地算法,我的理解是要对原矩阵进行修改,而不是生成一个新的矩阵来表示结果,那么这道题要做的就是根据每行和每列的0去更新整个矩阵的值,所以还是必须要去遍历一次整个矩阵,使用字典(哈希表)去存储包含0的行和列,并且还需要得到他的转置矩阵,根据字典存储的内容更新原矩阵和他的转置矩阵,最后通过对比两个矩阵,即原位置与转置后的位置值若相同则不变,不同则值为0,最终在原矩阵上更改,并返回结果(这里可返可不返).时间复杂度O(N2),空间复杂度O(N2).
在这里插入图片描述
ok,真不错,一遍过!目前想不到更好的算法,先这样,明天继续!

3.心得体会

第一次做矩阵的题目,还没接触到更优秀的算法,所以先遍历吧,慢慢成长!忘记放代码了,代码在这:

class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        col_zero = [0 for i in range(len(matrix[0]))]
        row_zero = [0 for i in range(len(matrix))]
        matrix_t = [[0 for j in range(len(matrix))]for i in range(len(matrix[0]))]
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                matrix_t[j][i] = matrix[i][j]
        map_zero = {'i':[],'j':[]}
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == 0:
                    map_zero['i'].append(i)
                    map_zero['j'].append(j)
        for i in set(map_zero['i']):
            matrix[i] = col_zero
        for j in set(map_zero['j']):
            matrix_t[j] = row_zero
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == matrix_t[j][i]:
                    continue
                else:
                    matrix[i][j] = 0
        return matrix

4.做题时长

7月11日 7:45-8:40 总时长五十五分钟~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值