【力扣笔记59】螺旋矩阵

题目

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

示例 1:

【力扣笔记59】螺旋矩阵

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

解法1(正确)

思想

先创建一个n*n的空矩阵,再使用螺旋方式给矩阵赋值。

golang代码

func generateMatrix(n int) [][]int {
   ans := [][]int(nil)
   //创建n*n的空矩阵
   for i := 0; i < n; i++ {
      temp := make([]int, 0)
      for j := 0; j < n; j++ {
         temp = append(temp, 0)
      }
      ans = append(ans, append([]int(nil), temp...))
   }
   cur := 1 //当前需要赋予矩阵中的值
   end := 0 //end用来缩小圆圈
   //当前值大于了n平方后说明已经赋值完毕
   for cur <= n*n {
      plr, pud := end, end //每一次循环的起点
      //往右
      for plr < n-end {
         ans[pud][plr] = cur
         cur++
         plr++
      }
      plr--
      pud++
      //往下
      for pud < n-end {
         ans[pud][plr] = cur
         cur++
         pud++
      }
      pud--
      plr--
      //往左
      for plr >= end {
         ans[pud][plr] = cur
         cur++
         plr--
      }
      plr++
      pud--
      //往上
      for pud >= end+1 {
         ans[pud][plr] = cur
         cur++
         pud--
      }
      end++
   }
   return ans
}

结果

执行结果:通过

执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户

内存消耗:2.2 MB, 在所有 Go 提交中击败了5.05%的用户

官方解答

https://leetcode-cn.com/problems/spiral-matrix-ii/solution/luo-xuan-ju-zhen-ii-by-leetcode-solution-f7fp/

上一篇:MySQL学会这招,以后轻松月入100万。(权威认证,明天就删)


下一篇:59、硬件方式实现互斥