Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,
Given n = 3,

You should return the following matrix:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

Analysis

Very similar to Spriral Matrix

Code

public class Solution {
    public int[][] generateMatrix(int n) {
        int[][] answer = new int[n][n];

        int rowBegin = 0;
        int rowEnd = n-1;
        int colBegin = 0;
        int colEnd = n-1;

        int value = 1;

        while(rowBegin<=rowEnd && colBegin <= colEnd){
            //向右走
            for(int j=colBegin; j<=colEnd; j++) {answer[rowBegin][j]=value; value++;}
            rowBegin++;

            //向下走
            for(int i=rowBegin; i<=rowEnd; i++) {answer[i][colEnd]=value; value++;}
            colEnd--;

            //向左走
            if(rowBegin<=rowEnd){
                for(int j=colEnd; j>=colBegin; j--) {answer[rowEnd][j]=value; value++;}
            }
            rowEnd--;

            //向上走
            if(colBegin<=colEnd){
                for(int i=rowEnd; i>=rowBegin; i--) {answer[i][colBegin]=value; value++;}
            }
            colBegin++;
        }

        return answer;
    }
}