思路:
没有思路
public class Solution {
int m;
int n;
boolean recordRow[];
boolean recordCol[];
public void setZeroes(int[][] matrix) {
int m=matrix.length;
int n=matrix[0].length;
recordRow=new boolean [m];
recordCol=new boolean [n];
for(int i=0;i<m;i++)
{
for(int k=0;k<n;k++)
{
if(matrix[i][k]==0&&!recordCol[k])
{
recordRow[i]=true;
recordCol[k]=true;
for(int i1=0;i1<m;i1++)
{
if(matrix[i1][k]==0)
{
recordRow[i1]=true;
}
else
{
matrix[i1][k]=0;
}
}
}
}
if(recordRow[i])
{
for(int k=0;k<n;k++)
matrix[i][k]=0;
}
}
}
}
大神的解答
其实也没改进多少。
public class Solution {
public void setZeroes(int[][] matrix) {
boolean fr = false,fc = false;
for(int i = 0; i < matrix.length; i++) {
for(int j = 0; j < matrix[0].length; j++) {
if(matrix[i][j] == 0) {
if(i == 0) fr = true;
if(j == 0) fc = true;
matrix[0][j] = 0;
matrix[i][0] = 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(fr) {
for(int j = 0; j < matrix[0].length; j++) {
matrix[0][j] = 0;
}
}
if(fc) {
for(int i = 0; i < matrix.length; i++) {
matrix[i][0] = 0;
}
}
}
本文介绍了改进的矩阵零填充算法,通过优化记录行和列的零元素位置,实现更高效的矩阵元素置零操作。
708

被折叠的 条评论
为什么被折叠?



