Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

螺旋矩阵

力扣题号59

题目描述:

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

示例 1:

img

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

其实这道题不涉及什么算法,主要是看我们的思维能力,多话画两遍图,看看四个顶点坐标的规律,以及中心点怎么确定

代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Solution {
public int[][] generateMatrix(int n) {
int [][] result = new int[n][n];
int circle = n / 2; //需要循环多少圈
int startX = 0; //x起始值
int startY = 0; // y起始值
int i;
int j;
int offSet = 1;
int count = 1;
while (circle -- > 0){
i = startX;
j= startY;
//从左到右
for (j = startY ; j < startY + n - offSet ; j ++){
result[startX][j] = count++ ;

}

//从右上到下
for(i = startX; i < startX + n -offSet; i++){
result[i][j] = count++;
}
//从右到左
for ( ; j > startY; j--){
result[i][j] = count++;
}
//从左下到上
for (; i > startX; i--){
result[i][startY] = count++;
}
startY++;
startX++;
offSet = offSet + 2;
}

if (n % 2 != 0){
result[n/2][n/2] = n * n;
}
return result;
}
}

评论