Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
public class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int up=0, down=n-1, left=0, right=n-1;
int k=1;
for(; up<=down && left<=right; up++, down--, left++, right--){
for(int i=left; i<=right; i++) matrix[up][i] = k++;
if(up == down) break;
for(int i=up+1; i<=down; i++) matrix[i][right] = k++;
if(left == right) break;
for(int i=right-1; i>=left; i--) matrix[down][i] = k++;
for(int i=down-1; i>up; i--) matrix[i][left] = k++;
}
return matrix;
}
}