螺旋矩阵
力扣题号59
题目描述:
1
| 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
|
示例 1:
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; int startY = 0; 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; } }
|