给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
一次通过,从外向内遍历就可以了。
class Solution { public int[][] generateMatrix(int n) { int [][] ans = new int [n][n]; int start1 = 0 ; int end1 = n ; int start2 = 0; int end2 = n ; int num = 1 ; while(start1 <= end1 && start2 <= end2){ for(int i = start1 ; i < end1 ; i ++){ ans[start1][i] = num ; num++ ; } start1 ++ ; for(int i = start1 ; i < end2;i++){ ans[i][end2-1] = num; num++; } end2--; for(int i = end2-1 ; i > start2 ; i --){ ans[end1-1][i] = num ; num ++ ; } end1 -- ; for(int i = end1 ; i >= start1 ; i --){ ans[i][start2] = num ; num ++ ; } start2++ ; } return ans ; } }分别标定四个边界,一点一点的写。就可以啦。
