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;
}
}