算法day05

102 阅读1分钟

螺旋矩阵

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

输入: 4

输出:

   1  2  3  4
   12 13 14 5
   11 16 15 6
   10 9  8  7

    int up = 0, down = n-1, left = 0, right = n-1;  //上、下、左、右边界
    int count = 1;   //计数
    int[][] res = new int[n][n];
    while(true){
        for(int i = left; i <= right; i++){
            res[up][i] = count++;
        }
        if(++up > down) break;
        
        for(int i = up; i <= down; i++){
            res[i][right] = count++;
        }
        if(--right < left) break;
        
        for(int i = right; i >= left; i--){
            res[down][i] = count++;
        }
        if(--down < up) break;
        
        for(int i = down; i >= up; i--){
            res[i][left] = count++;
        }
        if(++left > right) break;
    

    }