59. 螺旋矩阵 II

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 == 给数字,自己造一个矩阵 —> 原来是给矩阵,求数组

示例 1:
59. 螺旋矩阵 II - 图1
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

  1. //时间Omn,空间Omn
  2. func generateMatrix(n int) [][]int {
  3. matrix := make([][]int, n)
  4. for i := range matrix {
  5. matrix[i] = make([]int, n)
  6. }
  7. num := 1 //多一段构造 matrix
  8. top, bottom := 0, n -1
  9. left, right := 0, n -1
  10. for num <= n*n {
  11. for i := left; i <= right; i++ {
  12. matrix[top][i] = num
  13. num++ //多一段 num++
  14. }
  15. top++
  16. for i := top; i <= bottom; i++ {
  17. matrix[i][right] = num
  18. num++
  19. }
  20. right--
  21. for i := right; i >= left; i-- { //注意:这里i--,也变成bot相反
  22. matrix[bottom][i] = num
  23. num++
  24. }
  25. bottom--
  26. for i := bottom; i >= top; i-- {
  27. matrix[i][left] = num
  28. num++
  29. }
  30. left++
  31. }
  32. return matrix
  33. }