IT评测·应用市场-qidao123.com

标题: 73.矩阵置零 python [打印本页]

作者: 半亩花草    时间: 2025-1-11 03:51
标题: 73.矩阵置零 python
题目

题目形貌

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其地点行和列的所有元素都设为 0 。请使用 原地 算法。
示例 1:


输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]
示例 2:


输入: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
-                                             2                            31                                       2^{31}                  231 <= matrix[j] <=                                              2                            31                                       2^{31}                  231 - 1
题解

思绪分析

为了在不使用额外空间的情况下完成这个任务,我们可以使用矩阵的第一行和第一列来记录哪些行和列需要被置零。具体步调如下:
Python 实现代码

  1. def setZeroes(matrix):
  2.     m, n = len(matrix), len(matrix[0])
  3.    
  4.     # Step 1: Check if the first row and first column contain zeros
  5.     first_row_has_zero = any(matrix[0][j] == 0 for j in range(n))
  6.     first_col_has_zero = any(matrix[i][0] == 0 for i in range(m))
  7.    
  8.     # Step 2: Mark rows and columns that need to be zeroed
  9.     for i in range(1, m):
  10.         for j in range(1, n):
  11.             if matrix[i][j] == 0:
  12.                 matrix[i][0] = 0
  13.                 matrix[0][j] = 0
  14.    
  15.     # Step 3: Set matrix elements to zero based on marks
  16.     for i in range(1, m):
  17.         for j in range(1, n):
  18.             if matrix[i][0] == 0 or matrix[0][j] == 0:
  19.                 matrix[i][j] = 0
  20.    
  21.     # Step 4: Handle first row and column
  22.     if first_row_has_zero:
  23.         for j in range(n):
  24.             matrix[0][j] = 0
  25.     if first_col_has_zero:
  26.         for i in range(m):
  27.             matrix[i][0] = 0
复制代码
代码解释

这种方法确保了我们只使用常数级别的额外空间(O(1)),并且有效地完成了原地算法的要求。
提交结果



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4