public static int[][] getMatrix(int max) {
int length = (int) Math.sqrt(max);
int[][] result = new int[length][length];
int[][] hasNumber = new int[length][length];
int count = 1, i = 0, j = 0;
int flag = 1; // 1234 右 下 左 上
while (count <= max) {
result[i][j] = count++;
hasNumber[i][j] = 1;
//应该转向下、左、上、右的时候
if(flag == 1 && (j == length - 1 || hasNumber[i][j + 1] == 1)) {
flag = 2;
} else if(flag == 2 && (i == length - 1 || hasNumber[i + 1][j] == 1)) {
flag = 3;
} else if(flag == 3 && (j == 0 || hasNumber[i][j - 1] == 1)) {
flag = 4;
} else if(flag == 4 && (i == 0 || hasNumber[i - 1][j] == 1)) {
flag = 1;
}
if(flag == 1) {
j++;
} else if(flag == 2) {
i++;
} else if(flag == 3) {
j--;
} else {
i--;
}
}
return result;
}