LeetCode in Kotlin

73. Set Matrix Zeroes

Medium

Given an m x n integer matrix matrix, if an element is 0, set its entire row and column to 0’s.

You must do it in place.

Example 1:

Input: matrix = [[1,1,1],[1,0,1],[1,1,1]]

Output: [[1,0,1],[0,0,0],[1,0,1]]

Example 2:

Input: matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]

Output: [[0,0,0,0],[0,4,5,0],[0,3,1,0]]

Constraints:

Follow up:

Solution

class Solution {
    // Approach: Use first row and first column for storing whether in future
    //           the entire row or column needs to be marked 0
    fun setZeroes(matrix: Array<IntArray>) {
        val m = matrix.size
        val n: Int = matrix[0].size
        var row0 = false
        var col0 = false
        // Check if 0th col needs to be market all 0s in future
        for (ints in matrix) {
            if (ints[0] == 0) {
                col0 = true
                break
            }
        }
        // Check if 0th row needs to be market all 0s in future
        for (i in 0 until n) {
            if (matrix[0][i] == 0) {
                row0 = true
                break
            }
        }
        // Store the signals in 0th row and column
        for (i in 1 until m) {
            for (j in 1 until n) {
                if (matrix[i][j] == 0) {
                    matrix[i][0] = 0
                    matrix[0][j] = 0
                }
            }
        }
        // Mark 0 for all cells based on signal from 0th row and 0th column
        for (i in 1 until m) {
            for (j in 1 until n) {
                if (matrix[i][0] == 0 || matrix[0][j] == 0) {
                    matrix[i][j] = 0
                }
            }
        }
        // Set 0th column
        for (i in 0 until m) {
            if (col0) {
                matrix[i][0] = 0
            }
        }
        // Set 0th row
        for (i in 0 until n) {
            if (row0) {
                matrix[0][i] = 0
            }
        }
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy