[leetcode]73.Set Matrix Zeroes
Posted stAr_1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode]73.Set Matrix Zeroes相关的知识,希望对你有一定的参考价值。
/** * Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. click to show follow up. Follow up: Did you use extra space? A straight forward solution using O(mn) space is probably a bad idea. A simple improvement uses O(m + n) space, but still not the best solution. Could you devise a constant space solution? */ /* * 思路是通过第一行和第一列记录0所在的位置,容易出现的两个问题 * 1.由于一开始要用第一行和第一列记录,所以它们的数据是不能变的,所以应该首先用两个布尔类型记录 * 它们里边是否存在0,第一行存在0的话,最后要把第一行全部置零,第一列存在0,最后将第一列全部置零 * 2.记录下0的位置之后,再根据0的位置将对应行列置零,注意这时还是不能改变第一行和第一列的位置, * 因为行列置零是分别进行的,第一行和第一列的数据后边要用到,不能改变*/ public class Q73SetMatrixZeroes { public static void main(String[] args) { int[][] matrix = new int[][]{{0,0,0,5},{4,3,1,4},{0,1,1,4},{1,2,1,3},{0,0,1,1}}; setZeroes(matrix); for (int i = 0; i < matrix.length; i++) { System.out.println(Arrays.toString(matrix[i])); } } public static void setZeroes(int[][] matrix) { boolean row = false; boolean col = false; int m = matrix.length; int n = matrix[0].length; //判断第一列和第一行有没有0 for (int i = 0; i < m; i++) { if (matrix[i][0] == 0) { col = true; break; } } for (int i = 0; i < n; i++) { if (matrix[0][i] == 0) { row = true; break; } } //用第一行和第一列记录下数列中出现的0的位置 for(int i = 1;i < m;i++) { for (int j = 1; j < n; j++) { if (matrix[i][j] == 0) { matrix[0][j] = 0; matrix[i][0] = 0; } } } //根据0的位置将它所在的列全部置零 for (int i = 1;i < n;i++) { if (matrix[0][i] == 0) { for (int j = 1;j < m;j++) matrix[j][i] = 0; } } //根据0的位置将它所在的行全部置零 for (int i = 1;i < m;i++) { if (matrix[i][0] == 0) { for (int j = 1;j < n;j++) matrix[i][j] = 0; } } //如果第一行存在0那么将第一行全部置零 if (row == true) { for (int i = 0; i < n; i++) { matrix[0][i] = 0; } } //如果第一列存在0那么将第一列全部置零 if (col == true) { for (int i = 0; i < m; i++) { matrix[i][0] = 0; } } } }
以上是关于[leetcode]73.Set Matrix Zeroes的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 73. Set Matrix Zeroes
[leetcode]73.Set Matrix Zeroes
Leetcode 73: Set Matrix Zeroes
[leetcode][73] Set Matrix Zeroes