欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 小黑享受思考心流: 73. 矩阵置零

小黑享受思考心流: 73. 矩阵置零

2025/9/26 14:06:09 来源:https://blog.csdn.net/qq_37418807/article/details/147550536  浏览:    关键词:小黑享受思考心流: 73. 矩阵置零

小黑代码

class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""items = []m = len(matrix)n = len(matrix[0])for i in range(m):for j in range(n):if not matrix[i][j]:items.append((i, j))for item in items:x = item[0]y = item[1]for i in range(n):matrix[x][i] = 0for j in range(m):matrix[j][y] = 0return matrix

在这里插入图片描述

标记变量

class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""# 行和列数m = len(matrix)n = len(matrix[0])# 判断第一行和第一列是否有0has_zero_row = Falsehas_zero_column = Falsefor i in range(m):if not matrix[i][0]:has_zero_row = Truebreakfor i in range(n):if not matrix[0][i]:has_zero_column = Truebreak# 开始通过第一行和第一列记录该行是否置零for i in range(1, m):for j in range(1, n):if not matrix[i][j]:matrix[i][0] = 0matrix[0][j] = 0# 开始进行置零for i in range(1, m):if not matrix[i][0]:for t in range(1, n):matrix[i][t] = 0for i in range(1,n):if not matrix[0][i]:for t in range(1,m):matrix[t][i] = 0# 判断第一行和第一列是否需要置零if has_zero_row:for i in range(m):matrix[i][0] = 0if has_zero_column:for i in range(n):matrix[0][i] = 0return matrix

在这里插入图片描述

C#练习

public class Solution {public void SetZeroes(int[][] matrix) {int m = matrix.Length;int n = matrix[0].Length;// 标记变量bool rowZero = false;bool columnZero = false;// 计算标记变量for(int i = 0; i < m; i++){if(matrix[i][0]==0){rowZero = true;break;}}for(int j = 0; j < n; j++){if(matrix[0][j]==0){columnZero = true;break;}}// 开始计算为零的行列for(int i = 1; i < m; i++){for(int j = 1; j < n; j++){if(matrix[i][j]==0){matrix[i][0] = 0;matrix[0][j] = 0;}}}// 开始置零for(int i = 1; i < m; i++){if(matrix[i][0]==0){for(int j = 1; j < n; j++){matrix[i][j] = 0;}}}for(int j = 1; j < n; j++){if(matrix[0][j]==0){for(int i = 1; i < m; i++){matrix[i][j] = 0;}}}// 判断第一行和第一列是否需要置零if(rowZero){for(int i = 0; i < m; i++){matrix[i][0] = 0;}}if(columnZero){for(int j = 0; j < n; j++){matrix[0][j] = 0;}}}
}

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词