给定一个 m x n
的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
解题思路:要实现这个算法题本身并不难,只要会简单的遍历和记录即可,关键是需要使用原地算法,即不能创造新的数据结构来记录矩阵,所以解题思路就是用原本的矩阵的第一行和第一列,int两个整数将第一行第一列中是否有零记录下来即可完成此题。代码如下:
class Solution {
public void setZeroes(int[][] matrix) {
int m=matrix.length, n=matrix[0].length;
int row=0,col=0;
for(int i=0;i<m;i++){
if(matrix[i][0]==0){
col=1;
}
}
for(int j=0;j<n;j++){
if(matrix[0][j]==0){
row=1;
}
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(matrix[i][j]==0){
matrix[0][j]=matrix[i][0]=0;
}
}
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(matrix[i][0]==0||matrix[0][j]==0){
matrix[i][j]=0;
}
}
}
if(row==1){
for(int j=0;j<n;j++){
matrix[0][j]=0;
}
}
if(col==1){
for(int i=0;i<m;i++){
matrix[i][0]=0;
}
}
}
}