矩陣置零

矩陣置零


https://leetcode-cn.com/problems/set-matrix-zeroes/

解題思路:

  • 本題很容易想到空間復雜度為 O(mn)的解法,用一個boolean矩陣來標記每一個位置是否為空,最后再進行歸0操作,也算是暴力解決了。
  • 下面提供一種狀態(tài)壓縮的方式,我們可以用原有的第0列和第0行來做標記,標記 row(1~row) col (1~col)這部分矩陣。至于原矩陣的第0行/列,可以用兩個變量來記錄是否要置0,在最開始進行判斷,然后第0行/列就用來記錄小矩陣,最后再處理第0行/列。
public class Solution {

    public void setZeroes(int[][] matrix) {
        int row = matrix.length, col = matrix[0].length;
        boolean isRow0 = false, isCol0 = false;
        // 判斷第0列是否存在 0,一旦存在則在后面會將這一列全部歸0
        for (int i = 0; i < row; i++) {
            if (matrix[i][0] == 0) {
                isCol0 = true;
                break;
            }
        }
        // 同上判斷第0行是否存在0
        for (int j = 0; j < col; j++) {
            if (matrix[0][j] == 0) {
                isRow0 = true;
                break;
            }
        }
        // 標記好后第0列/行后,將作為判斷內(nèi)部矩陣是否存在0的標志數(shù)組
        for (int i = 1; i < row; i++) {
            for (int j = 1; j < col; j++) {
                if (matrix[i][j] == 0) {
                    matrix[i][0] = matrix[0][j] = 0;
                }
            }
        }
        // 根據(jù)第0列/行記錄的結果將對應行列進行歸0操作
        for (int i = 1; i < row; i++) {
            for (int j = 1; j < col; j++) {
                if (matrix[i][0] == 0 || matrix[0][j] == 0) {
                    matrix[i][j] = 0;
                }
            }
        }
        // 最后將第0列和行判斷歸0
        if (isCol0) {
            for (int i = 0; i < row; i++) {
                matrix[i][0] = 0;
            }
        }
        if (isRow0) {
            for (int j = 0; j < col; j++) {
                matrix[0][j] = 0;
            }
        }
    }

}
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關閱讀更多精彩內(nèi)容

  • 73. 矩陣置零 題目描述 給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設為 0...
    周闖閱讀 292評論 0 0
  • 給定一個 m * n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地算法 https...
    Shimmer_閱讀 231評論 0 1
  • 給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地算法。 示例 1...
    刻苦驢噥閱讀 276評論 0 0
  • 標題說明了一切,話不多說,開始正文吧! 跳躍游戲 給定一個非負整數(shù)數(shù)組,你最初位于數(shù)組的第一個位置。 數(shù)組中的每個...
    思想永不平凡閱讀 938評論 0 4
  • 準備開一個力扣解題的系列,督促自己每天刷題,就從今天開始。 原題 給定一個 m x n 的矩陣,如果一個元素為 0...
    健健_1e44閱讀 450評論 0 0

友情鏈接更多精彩內(nèi)容