问题阐述
任意给一个数组 i,打印三角螺旋矩阵。
例如:给定一个数字10,需要返回的内容如下图所示:
public class Main {
public static void main(String[] args) {
Main main = new Main();
int n = 10;
int[][] result = main.solution(n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.print(result[i][j]+" ");
}
System.out.println();
}
}
public int[][] solution(int n){
int[][] result = new int[n][n];
if(n<1){
return result;
}
int left = 0;
int right = n-1;
int up = 0;
int down = n-1;
int begin = 1;
int num = (n%2 == 0)? (n*n/2 + n/2):(n*n/2 + n/2 + 1);
while (num > 0){
for(int row = up; row <= down; row++){
result[row][right] = begin;
num--;
begin++;
}
right--;
if(num > 0){
for(int row = right;row >= left;row--){
result[down][row] = begin;
num--;
begin++;
}
down--;
}
if(num > 0){
int temp = left;
for(int col = down;col > up;col--){
result[col][++temp] = begin;
num--;
begin++;
}
up+=2;
left+=2;
}
}
return result;
}
}