| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 
							- var dy []int = []int{0, 1, 0, -1}
 
- var dx []int = []int{1, 0, -1, 0}
 
- type pair struct {
 
- 	_1 int
 
- 	_2 int
 
- }
 
- func updateMatrix(matrix [][]int) [][]int {
 
- 	m := len(matrix)
 
- 	if m == 0 {
 
- 		return matrix
 
- 	}
 
- 	n := len(matrix[0])
 
- 	if n == 0 {
 
- 		return matrix
 
- 	}
 
- 	updated := make([][]bool, m)
 
- 	for i := range updated {
 
- 		updated[i] = make([]bool, n)
 
- 	}
 
- 	queue := make([]pair, 0)
 
- 	for y := 0; y < m; y++ {
 
- 		for x := 0; x < n; x++ {
 
- 			if matrix[y][x] == 0 {
 
- 				updated[y][x] = true
 
- 				continue
 
- 			}
 
- 			for i := 0; i < 4; i++ {
 
- 				ny, nx := y+dy[i], x+dx[i]
 
- 				if 0 <= ny && ny < m && 0 <= nx && nx < n && matrix[ny][nx] == 0 {
 
- 					updated[y][x] = true
 
- 					queue = append(queue, pair{y, x})
 
- 					break
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	for len(queue) != 0 {
 
- 		p := queue[0]
 
- 		queue = queue[1:]
 
- 		val := matrix[p._1][p._2]
 
- 		for i := 0; i < 4; i++ {
 
- 			ny, nx := p._1+dy[i], p._2+dx[i]
 
- 			if 0 <= ny && ny < m && 0 <= nx && nx < n && !updated[ny][nx] {
 
- 				updated[ny][nx] = true
 
- 				queue = append(queue, pair{ny, nx})
 
- 				matrix[ny][nx] = val + 1
 
- 			}
 
- 		}
 
- 	}
 
- 	return matrix
 
- }
 
 
  |