leetcode73 矩陣置零

2021-10-05 03:53:40 字數 1044 閱讀 5964

給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。

高階:

方法一:

首先我們建立兩個bool陣列rowzero和colzero,元素個數分別為matrix的行跟列,用於記錄當前行以及當前列是否有數字0。遍歷第一遍時記錄資訊,遍歷第二遍時,若(rowzero[i] || colzero[j]),則表明當前位置應該被置0.

時間複雜度為o(n2),空間複雜度為o(m+n)。

class

solution}}

for(

int i =

0; i < row;

++i)

}return;}

};

方法二:

方法一中我們用了兩個陣列分別記錄該行以及該列是否需要全部被置為0 。 在該方法中我們可以用給定陣列的第一行和第一列來代替方法一中的rowzero和colzero,因此我們應該從matrix[1][1]開始遍歷matrix。若matrix[i][j] == 0,則matrix[0][j]=0,且matrix[i][0]=0。

另外,我們需要用兩個額外的bool變數記錄第一行是否有0以及第一列是否有0.

當資訊記錄完畢後,再次從matrix[1][1]遍歷matrix,如果滿足(matrix[i][0] == 0 || matrix[0][j] == 0),則表示該位置應該被置0.

最後根據兩個bool變數判斷第一行和第一列是否需要被置0即可。

class

solution

}for

(int i =

0; i < row;

++i)

}for

(int i =

1; i < row;

++i)}}

for(

int i =

1; i < row;

++i)}if

(rowzero)

if(colzero)}}

;

leetcode 73 矩陣置零

給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 示例 2 輸入 0,1,2,0 3,4,5,2 1,3,1,5 輸出 0,0,0,0 0,4,5,0...

leetcode73 矩陣置零

給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 空間複雜度為o mn 的解法自不用多說,直接新建乙個和matrix等大小的矩陣,然後一行一行的掃,只...

leetcode 73 矩陣置零

給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 示例 2 輸入 0,1,2,0 3,4,5,2 1,3,1,5 輸出 0,0,0,0 0,4,5,0...