# 0073. Set Matrix Zeroes ###### tags: `Leetcode` `Medium` Link: https://leetcode.com/problems/set-matrix-zeroes/ ## 思路 如果用暴力解法,用m (number of rows)记录每一行是否需要添0,用n(number of columns)记录每一列是否需要添0,空间复杂度就会是O(m+n) 降低空间复杂度就需要利用到原有的空间,用第一行和第一列记录对应的一行或一列要不要添0,但这样就会不知道第一行和第一列需不需要添0,因此需要两个额外的boolean记录第一行和第一列需不需要添0 ## Code ```java= class Solution { public void setZeroes(int[][] matrix) { boolean ifRowZero = false, ifColumnZero = false; for(int i = 0;i < matrix[0].length;i++){ if(matrix[0][i] == 0){ ifRowZero = true; break; } } for(int i = 0;i < matrix.length;i++){ if(matrix[i][0] == 0){ ifColumnZero = true; break; } } for(int i = 1;i < matrix.length;i++){ for(int j = 1;j < matrix[0].length;j++){ if(matrix[i][j] == 0){ matrix[i][0] = 0; matrix[0][j] = 0; } } } for(int i = 1;i < matrix.length;i++){ for(int j = 1;j < matrix[0].length;j++){ if(matrix[i][0] == 0 || matrix[0][j] == 0){ matrix[i][j] = 0; } } } if(ifRowZero){ for(int i = 0;i < matrix[0].length;i++){ matrix[0][i] = 0; } } if(ifColumnZero){ for(int i = 0;i < matrix.length;i++){ matrix[i][0] = 0; } } } } ``` ## Result Runtime: 1 ms, faster than **95.90%** of Java online submissions for Set Matrix Zeroes. Memory Usage: 40.6 MB, less than **76.51%** of Java online submissions for Set Matrix Zeroes.
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up