| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- package main
 
- func generateMatrix(n int) [][]int {
 
- 	res := make([][]int, n)
 
- 	for i := range res {
 
- 		res[i] = make([]int, n)
 
- 	}
 
- 	cnt := 1
 
- 	x, y := 0, 0
 
- 	for l := n; l > 0; l -= 2 {
 
- 		if l == 1 {
 
- 			res[y][x] = cnt
 
- 			return res
 
- 		}
 
- 		for dir := 0; dir < 4; dir++ {
 
- 			var xSpeed, ySpeed int
 
- 			switch dir {
 
- 			case 0:
 
- 				xSpeed, ySpeed = 1, 0
 
- 			case 1:
 
- 				xSpeed, ySpeed = 0, 1
 
- 			case 2:
 
- 				xSpeed, ySpeed = -1, 0
 
- 			default:
 
- 				xSpeed, ySpeed = 0, -1
 
- 			}
 
- 			for i := 0; i < l-1; i, cnt = i+1, cnt+1 {
 
- 				res[y][x] = cnt
 
- 				x, y = x+xSpeed, y+ySpeed
 
- 			}
 
- 		}
 
- 		x, y = x+1, y+1
 
- 	}
 
- 	return res
 
- }
 
- /* func main() {
 
- 	fmt.Println(generateMatrix(0))
 
- 	fmt.Println(generateMatrix(1))
 
- 	fmt.Println(generateMatrix(2))
 
- 	fmt.Println(generateMatrix(3))
 
- 	fmt.Println(generateMatrix(4))
 
- } */
 
 
  |