1. 程式人生 > >矩陣置零 go實現

矩陣置零 go實現

給定一個 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],
  [0,3,1,0]
]
進階:

一個直接的解決方案是使用  O(mn) 的額外空間,但這並不是一個好的解決方案。
一個簡單的改進方案是使用 O(m + n) 的額外空間,但這仍然不是最好的解決方案。
你能想出一個常數空間的解決方案嗎?

func setZeroes(matrix [][]int)  {
    m:=len(matrix)
    n:=len(matrix[0])
    if m==0||n==0 {
        return
    }
    arr1 := make([]bool,m)
    arr2 := make([]bool,n)
    for i:=0;i<m ;i++  {
        for j:=0;j<n ;j++  {
	if matrix[i][j]==0 {
	    arr1[i]=true
	    arr2[j]=true
	}
        }
    }
    for  i:=0;i<m ;i++  {
        if arr1[i]{
	for j:=0;j<n ;j++  {
	    matrix[i][j]=0
	}
        }
    }
    for j:=0;j<n ; j++ {
        if arr2[j] {
	for i:=0;i<m ;i++  {
	    matrix[i][j]=0
	}
        }
    }

}