矩陣置零 go實現
阿新 • • 發佈:2018-12-06
給定一個 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 } } } }