| 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}
 |