欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 力扣-hot100 (矩阵置零)

力扣-hot100 (矩阵置零)

2025/5/9 15:05:38 来源:https://blog.csdn.net/A_long_way_to_go/article/details/147743593  浏览:    关键词:力扣-hot100 (矩阵置零)

73. 矩阵置零

中等

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

示例 1:

img

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

示例 2:

img

输入: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

class Solution {public void setZeroes(int[][] matrix) {int n = matrix.length;int m = matrix[0].length;// 为了不破坏原来的结构, 就是被感染成 0 的不能再去感染别的数, 只有初始为0的数才能去感染其它数int[][] copy = new int[n][m];// 初始化for(int i = 0; i < n; i ++){for(int j = 0; j < m; j ++) copy[i][j] = -1;}// O(n^3)for(int i = 0; i < n; i ++){for(int j = 0; j < m; j ++){if(matrix[i][j] == 0){// 可进行优化, 因为这里只要把行和列的下标索引记录下来就可以了for(int k = 0; k < n; k ++) copy[k][j] = 0;for(int k = 0; k < m; k ++) copy[i][k] = 0;}}}
​for(int i = 0; i < n; i ++){for(int j = 0; j < m; j ++){if(copy[i][j] == 0) matrix[i][j] = 0;}}}
}

版权声明:

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

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

热搜词