給定一個正整數 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 ;
}
}
分别标定四個邊界,一點一點的寫。就可以啦。