前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打卡群刷题总结0720——矩阵置零

打卡群刷题总结0720——矩阵置零

作者头像
木又AI帮
发布2020-07-22 10:17:56
2690
发布2020-07-22 10:17:56
举报
文章被收录于专栏:木又AI帮木又AI帮

题目:73. 矩阵置零

链接:https://leetcode-cn.com/problems/set-matrix-zeroes

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ] 示例 2: 输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5] ] 输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0] ] 进阶: 一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。 你能想出一个常数空间的解决方案吗?

解题:

1、遍历,将0所在行和所在列的非0元素用其他数字来替换,最后将所有替换的数字换成0。

代码:

1、常数空间

代码语言:javascript
复制
class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        # 常数
        if len(matrix) == 0 or len(matrix[0]) == 0:
            return matrix

        rows = []
        cols = []
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == 0:
                    for c in range(len(matrix[0])):
                        if matrix[i][c] != 0:
                            matrix[i][c] = -1e9
                    for r in range(len(matrix)):
                        if matrix[r][j] != 0:
                            matrix[r][j] = -1e9

        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == -1e9:
                    matrix[i][j] = 0

2、O(m+n)空间

代码语言:javascript
复制
class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        # m + n
        if len(matrix) == 0 or len(matrix[0]) == 0:
            return matrix

        rows = []
        cols = []
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == 0:
                    rows.append(i)
                    cols.append(j)
        rows = list(set(rows))
        cols = list(set(cols))

        for r in rows:
            for j in range(len(matrix[0])):
                matrix[r][j] = 0
        for i in range(len(matrix)):
            for c in cols:
                matrix[i][c] = 0
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档