package com.interview.books.leetcodeoj;
/**
* Created_By: stefanie
* Date: 14-12-22
* Time: 下午7:48
*/
public class LOJ59_SpiralMatrixII {
//use layer, loop from [0 ~ (n + 1)/2];
//when n != m and min(m, n) is odd, omit the bottom and left loop on last round
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int counter = 1;
for(int layer = 0; layer < (n + 1)/2; layer++){
matrix[layer][layer] = counter++;
for(int i = layer + 1; i < n - layer; i++) matrix[layer][i] = counter++;
for(int i = layer + 1; i < n - layer; i++) matrix[i][n-layer-1] = counter++;
//if(layer == (n + 1)/2 - 1 && n % 2 == 1) break;
for(int i = n - layer - 2; i >= layer; i--) matrix[n-layer-1][i] = counter++;
for(int i = n - layer - 2; i > layer; i--) matrix[i][layer] = counter++;
}
return matrix;
}
}