题目
给定一个正整数 n n n,生成一个包含 1 到 n 2 n^2 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
代码
import java.util.Arrays;
public class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int t = 1;
for (int i=0; i<n/2; i++){
for (int j=i; j<n-i; j++)
matrix[i][j] = t++;
for (int j=i+1; j<n-i-1; j++)
matrix[j][n-i-1] = t++;
for (int j=n-i-1; j>=i; j--)
matrix[n-i-1][j] = t++;
for (int j=n-i-2; j>i; j--)
matrix[j][i] = t++;
}
if ((n&1) == 1)
matrix[n/2][n/2] = t;
return matrix;
}
public static void main(String[] args) {
Solution solution = new Solution();
for (int[] a:solution.generateMatrix(5))
System.out.println(Arrays.toString(a));
}
}