返回

Python描述 LeetCode 73. 矩阵置零

发布时间:2023-08-12 05:58:53 159

Python描述 LeetCode 73. 矩阵置零

题目

给定一个 ​​*m* x *n*​​ 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 ​​原地​​

示例 1:

Python描述 LeetCode 73. 矩阵置零_python_02

输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]

示例 2:

Python描述 LeetCode 73. 矩阵置零_解决方案_03

输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

提示:

  • ​m == matrix.length​
  • ​n == matrix[0].length​
  • ​1 <= m, n <= 200​
  • ​-231 <= matrix[i][j] <= 231 - 1​

进阶:

  • 一个直观的解决方案是使用​​O(*m**n*)​​ 的额外空间,但这并不是一个好的解决方案。
  • 一个简单的改进方案是使用​​O(*m* + *n*)​​ 的额外空间,但这仍然不是最好的解决方案。
  • 你能想出一个仅使用常量空间的解决方案吗?

Python描述

只用O(1)的空间,那就找第一个有0的行作为标记行,记录需要置零的列,然后置零即可

class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
n,m = len(matrix),len(matrix[0])
flag = -1
for idx,item in enumerate(matrix):
if 0 in item:
flag = idx
for j in range(m):
matrix[flag][j] = 1 if matrix[flag][j] == 0 else 0
break
if flag == -1:
return

for i in range(n):
if i == flag:
continue
if 0 in matrix[i]:
for j in range(m):
matrix[flag][j] = 1 if matrix[i][j] == 0 or matrix[flag][j] else 0
matrix[i][j] = 0
for j in range(m):
if matrix[flag][j] == 1:
for i in range(n):
matrix[i][j] = 0

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Python描述 LeetCode 78. 子集 2023-08-12 03:14:11