力扣59(java)-螺旋矩阵Ⅱ(中等)
题目:
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
先定义一个n*n的空矩阵res:
- 定义4个初始的边界值,up =0, down=n-1,left=0,right=n-1,设定元素的初始值index =1
- 当index <= n*n时,按照从左到右,从上到下,从右到左,从下到上的顺序的依次遍历
- 每遍历一次就将index的值 +1,并更新边界值
- 最终当index > n*n,就退出循环
- 返回矩阵res
1 class Solution { 2 public int[][] generateMatrix(int n) { 3 int[][] res = new int[n][n]; 4 int up = 0, down = n-1, left = 0, right = n-1; 5 int index = 1; 6 while(index <= n*n){ 7 //从左向右遍历 8 for(int i = left; i <= right; i++){ 9 res[up][i] = index; 10 index++; 11 } 12 up++; 13 //从上向下遍历 14 for(int i = up; i <= down; i++){ 15 res[i][right] = index; 16 index++; 17 } 18 right--; 19 //从右向左遍历 20 for(int i = right; i >= left; i--){ 21 res[down][i] = index; 22 index++; 23 } 24 down--; 25 //从下向上遍历 26 for(int i = down; i >= up; i--){ 27 res[i][left] = index; 28 index++; 29 } 30 left++; 31 } 32 return res; 33 34 } 35 }