这道题我认为是比较简单的,因为自己写出来了…
这是我的解法
class Solution {
public void setZeroes(int[][] matrix) {
int r = matrix.length;
int c = matrix[0].length;
int kk[] = new int[r*c*2];
int s = 0;
for(int i=0;i<r;i++ ){
for(int j=0;j<c;j++){
if(matrix[i][j]==0){
kk[s]=i;
kk[++s]=j;
if(s!=r*c){
s=s+1;
}
}
}
}
for(int i=0;i <s;i++){
if(i%2!=0){
for(int k=0;k<r;k++){
matrix[k][kk[i]]=0;
}
}else{
for(int g=0;g<c;g++){
matrix[kk[i]][g]=0;
}
}
}
}
}
这是官方的其中一个解法,代码量更少,看着比我这个舒服
class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length, n = matrix[0].length;
boolean[] row = new boolean[m];
boolean[] col = new boolean[n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == 0) {
row[i] = col[j] = true;
}
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (row[i] || col[j]) {
matrix[i][j] = 0;
}
}
}
}
}
这篇博客探讨了一道关于如何在二维矩阵中设置零点的问题,并提供了两种不同的解决方案。作者首先分享了自己的解法,通过创建一个临时数组kk来记录零值的位置,然后遍历设置矩阵的对应元素为零。接着,博主展示了官方的简洁解法,使用两个布尔数组分别标记每一行和每一列是否有零值,最后只需遍历一次矩阵即可完成设置。这两种方法在效率和代码简洁性上进行了比较。
408

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



