Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
Input: 3
Output:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
实现思路:给定四个边界,left = 0,right = n-1, top = 0,bottom = n-1,
然后每次进行四遍循环,
(top)left->right 循环结束后top+1
(right)top->bottom 循环结束后right-1
(bottom)right->left 循环结束后bottom-1
(left)bottom->top 循环结束后left+1
结束条件是index>n*n。
class Solution {
public int[][] generateMatrix(int n) {
int [][]res = new int[n][n];
int left = 0;
int right = n-1;
int top = 0;
int bottom = n-1;
int index = 1;
int quit = n*n;
while(index<=quit){
for(int i=left;i<=right;i++)
res[top][i] = (index++);
top++;
for(int i=top;i<=bottom;i++)
res[i][right] = (index++);
right--;
for(int i=right;i>=left;i--)
res[bottom][i]=(index++);
bottom--;
for(int i=bottom;i>=top;i--)
res[i][left]=(index++);
left++;
}
return res;
}
}