LeetCode-073-矩陣置零

給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設(shè)為 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],
[0,3,1,0]
]

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/set-matrix-zeroes

解題思路

先掃描一遍矩陣, 將遇到的0與之所在的行和列的所有數(shù)設(shè)置為一個flag數(shù)

如果不使用flag然后直接將所有0在的行和列設(shè)置為0的話, 最后結(jié)果總是整個矩陣都是0

最后在掃描一次矩陣, 將所有flag換為0

代碼

class Solution {
    public void setZeroes(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        int flag = -10; // 第一輪掃描該被置零的位置
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (matrix[i][j] == 0) {
                    matrix[i][j] = flag; // 該位先置為flag
                    // 所在行
                    for (int k = 0; k < n; k++) {
                        // 不能直接把同行同列的0的設(shè)置為flag, 否則會忽略掉一部分0
                        if (matrix[i][k] != 0) { 
                            matrix[i][k] = flag;
                        }
                    }
                    // 所在列
                    for (int k = 0; k < m; k++) {
                        if (matrix[k][j] != 0) {
                            matrix[k][j] = flag;
                        }
                    }
                }
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (matrix[i][j] == flag) {
                    matrix[i][j] = 0;
                }
            }
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 題目:給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設(shè)為 0。請使用原地算法。 示...
    minningl閱讀 222評論 0 0
  • 標(biāo)題說明了一切,話不多說,開始正文吧! 跳躍游戲 給定一個非負(fù)整數(shù)數(shù)組,你最初位于數(shù)組的第一個位置。 數(shù)組中的每個...
    思想永不平凡閱讀 938評論 0 4
  • 73. 矩陣置零 題目描述 給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設(shè)為 0...
    周闖閱讀 292評論 0 0
  • 73. 矩陣置零[https://leetcode-cn.com/problems/set-matrix-zero...
    瀟湘demi閱讀 355評論 0 0
  • 準(zhǔn)備開一個力扣解題的系列,督促自己每天刷題,就從今天開始。 原題 給定一個 m x n 的矩陣,如果一個元素為 0...
    健健_1e44閱讀 450評論 0 0

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