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

posted on 2022-04-21 11:03  我不想一直当菜鸟  阅读(54)  评论(0编辑  收藏  举报