How to change all elements of row i and column j in a binary matrix to 0 if cell[i, j] is 0 in Go

1 Answer

0 votes
package main

import (
    "fmt"
)

func changeRowColumn(matrix [][]int, row, col int) {
    rows := len(matrix)
    cols := len(matrix[0])

    for j := 0; j < cols; j++ {
        if matrix[row][j] != 0 {
            matrix[row][j] = -1
        }
    }
    for i := 0; i < rows; i++ {
        if matrix[i][col] != 0 {
            matrix[i][col] = -1
        }
    }
}

func changeBinaryMatrix(matrix [][]int) {
    rows := len(matrix)
    if rows == 0 {
        return
    }
    cols := len(matrix[0])
    if cols == 0 {
        return
    }

    for i := 0; i < rows; i++ {
        for j := 0; j < cols; j++ {
            if matrix[i][j] == 0 {
                changeRowColumn(matrix, i, j)
            }
        }
    }

    for i := 0; i < rows; i++ {
        for j := 0; j < cols; j++ {
            if matrix[i][j] == -1 {
                matrix[i][j] = 0
            }
        }
    }
}

func printMatrix(matrix [][]int) {
    for _, row := range matrix {
        for _, val := range row {
            fmt.Printf("%d ", val)
        }
        fmt.Println()
    }
}

func main() {
    matrix := [][]int{
        {1, 1, 0, 1, 1, 1},
        {1, 1, 1, 1, 1, 1},
        {1, 1, 0, 1, 1, 1},
        {1, 1, 1, 1, 1, 1},
        {1, 0, 1, 1, 1, 1},
    }

    changeBinaryMatrix(matrix)
    printMatrix(matrix)
}



/*
run:

0 0 0 0 0 0 
1 0 0 1 1 1 
0 0 0 0 0 0 
1 0 0 1 1 1 
0 0 0 0 0 0 

*/



 



answered Jul 5 by avibootz
...