标签:14 int 矩阵 ++ length matrix col row
73. 矩阵置零
给定一个 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
-231 <= matrix[i][j] <= 231 - 1
进阶:
- 一个直观的解决方案是使用
O(mn)
的额外空间,但这并不是一个好的解决方案。 - 一个简单的改进方案是使用
O(m + n)
的额外空间,但这仍然不是最好的解决方案。 - 你能想出一个仅使用常量空间的解决方案吗?
1 class Solution { 2 public void setZeroes(int[][] matrix) { 3 //行数 4 int m = matrix.length; 5 //列数 6 int n = matrix[0].length; 7 //将需要改变的位置记录在两个一维boolean数组中,也可以设置为int型,将需要修改的置1 8 boolean[] row = new boolean[m]; 9 boolean[] col = new boolean[n]; 10 //遍历获取需要修改位置的元素 11 for(int i = 0;i < m;i++){ 12 for(int j = 0;j < n;j++){ 13 if(matrix[i][j] == 0){ 14 row[i] = col[j] = true; 15 } 16 } 17 } 18 //将需要置0的位置上元素进行置0 19 for(int i =0;i < m;i++){ 20 for(int j = 0;j < n;j++){ 21 if(row[i] || col[j]){ 22 matrix[i][j] = 0; 23 } 24 } 25 } 26 } 27 }
1 class Solution { 2 public void setZeroes(int[][] matrix) { 3 //行数 4 int m = matrix.length; 5 //列数 6 int n = matrix[0].length; 7 //将需要改变的位置记录在两个一维boolean数组中,也可以设置为int型,将需要修改的置1 8 int[] row = new int[m]; 9 int[] col = new int[n]; 10 //遍历获取需要修改位置的元素 11 for(int i = 0;i < m;i++){ 12 for(int j = 0;j < n;j++){ 13 if(matrix[i][j] == 0){ 14 row[i] = col[j] = 1; 15 } 16 } 17 } 18 //将需要置0的位置上元素进行置0 19 for(int i =0;i < m;i++){ 20 for(int j = 0;j < n;j++){ 21 if(row[i] == 1 || col[j] == 1){ 22 matrix[i][j] = 0; 23 } 24 } 25 } 26 } 27 }
标签:14,int,矩阵,++,length,matrix,col,row 来源: https://www.cnblogs.com/fulaien/p/16384326.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。