73.矩阵置零

·题目描述

·解题思路

——————初步思路,暴力求解——————

1.遍历原矩阵,记录0位置的行列值,存入数组flags中,作为标志

2.读取flags中的元素,获取要置为0的行列值,然后两个循环将matrix中的对应元素置为0

代码:

    def setZeroes(self, matrix):
        #时间复杂度O(mn^2),空间复杂度o(mn)
        row = len(matrix)
        col = len(matrix[0])
        flags = []

        for i in range(row):
            for j in range(col):
                if matrix[i][j] == 0:
                    res = [i,j]
                    flags.append(res)

        for flag in flags:
            r,c = flag[0],flag[1]
            for i in range(row):
                matrix[i][c] =0
            for j in range(col):
                matrix[r][j] = 0

        return matrix

——————改进优化,使用哈希表——————

1.将原始需要记录行列的数组flags改为两个哈希表row和col

2.遍历矩阵将0位子的行列分别存入哈希表中

3.循环置为0

代码:

    def setZeroes(self, matrix):
          # 时间复杂度O(mn) 空间复杂度O(m+n)
        row_num = len(matrix)
        col_num = len(matrix[0]) if row_num > 0 else 0
        row = set()
        col = set()


        for i in range(row_num):
            for j in range(col_num):
                if matrix[i][j] == 0:
                    row.add(i)
                    col.add(j)

        for i in range(row_num):
            for j in range(col_num):
                if i in row or j in col:
                    matrix[i][j] = 0

        return matrix

相关推荐

  1. 73. 矩阵

    2024-04-04 13:14:02       34 阅读
  2. 73. 矩阵

    2024-04-04 13:14:02       34 阅读
  3. 73.矩阵

    2024-04-04 13:14:02       13 阅读
  4. 矩阵73. 矩阵

    2024-04-04 13:14:02       40 阅读
  5. 【中等】73. 矩阵

    2024-04-04 13:14:02       44 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 13:14:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 13:14:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 13:14:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 13:14:02       18 阅读

热门阅读

  1. Vue的双向绑定v-model详细介绍

    2024-04-04 13:14:02       13 阅读
  2. 责任链模式详解+代码案例

    2024-04-04 13:14:02       13 阅读
  3. ES6模块与CommonJs模块异同

    2024-04-04 13:14:02       14 阅读
  4. git已经commit的怎么合并信息再push

    2024-04-04 13:14:02       18 阅读
  5. 前端查询前校验该输入的字段是否能够进行查询

    2024-04-04 13:14:02       12 阅读
  6. C++多态

    C++多态

    2024-04-04 13:14:02      15 阅读
  7. 【Vue.js 3.0】NProgress 进度条

    2024-04-04 13:14:02       15 阅读