Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n =
You should return the following matrix:Given n =
3
,[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
public class Solution { public int[][] generateMatrix(int n) { int[][] ret = new int[n][n]; int i = 0; int j = 0; int c = 1; while(n > 1){ for(int k = 0; k < n-1; ++k){ ret[i][j++] = c++; } for(int k = 0; k < n-1; ++k){ ret[i++][j] = c++; } for(int k = 0; k < n-1; ++k){ ret[i][j--] = c++; } for(int k = 0; k < n-1; ++k){ ret[i--][j] = c++; } i++; j++; n -= 2; } if(1 == n){ ret[i][j] = c; } return ret; } }
No comments:
Post a Comment