螺旋数组

60 阅读1分钟
public static int[][] generateMatrix(int n) {
    int loop=n/2;
    int mid=n/2;
    int offset=1;
    int startX=0,startY=0;
    int[][] result=new int[n][n];
    int i,j;
    int count=1;
    while (loop--!=0){
        int turns=n-offset;
        for(i=startX;i<turns;i++){
            result[startX][i]=count++;
        }
        for(j=startY;j<turns;j++){
            result[j][i]=count++;
        }
        for(;i>=offset;i--){
            result[j][i]=count++;
        }
        for(;j>=offset;j--){
            result[j][i]=count++;
        }
        offset++;
        startX++;
        startY++;
    }
    if(n%2!=0){
        result[mid][mid]=count;
    }
    return result;
}