题目:给定一个正整数 n,生成一个包含 1 到 n的平方 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
分析:给定是3,那就生成一个 3^2 = 9 的矩阵。 如图: 所以我们先要找到路径:右-下-左-上;然后就是向内环绕的过程,逐层填充。 代码如下:
public class Luoxuan{ public int[][] getresult(int n) { int[][] res = new int[n][n]; for(int s = 0, e = n - 1, m = 1; s<=e ; s++,e--){ for (int j = s; j <= e; j++) res[s][j] = m++; for (int i = s+1; i <= e; i++) res[i][e] = m++; for (int j = e-1; j >= s; j--) res[e][j] = m++; for (int i = e-1; i >= s+1; i--) res[i][s] = m++; } return res; } }