螺旋矩阵 II

给你一个数n生成一个包含1-n^2的螺旋形矩阵

样例

n = 3
矩阵为

[
  [ 1, 2, 3 ],
  [ 8, 9, 4 ],
  [ 7, 6, 5 ]
]

完全是一道数学的归纳题

public class Solution {
    /*
     * @param n: An integer
     * @return: a square matrix
     */
    public int[][] generateMatrix(int n) {
        // write your code here
        //第layer层 从左上到右上 ans[layer-1][layer-1]到ans[layer-1][n-1-layer+1-1]//第layer层 从右上到右下 ans[layer-1][n-1-layer+1] 到 ans[n-1-layer+1-1][n-1-layer+1]
        //第layer层 从右下到左下ans[n-1-layer+1][n-1-layer+1]到 ans[n-1-layer+1][layer]
        //第layer层 从左下到左上从 ans[n-1-layer+1][layer-1] 到 ans[layer][layer-1]
        int[][] ans = new int[n][n];
        int tempn = 1;
        for(int layer = 1;layer<=(n+1)/2;layer++){
            for(int i = layer-1;i<=n-1-layer+1-1;i++){
                ans[layer-1][i] = tempn++;
            }
            for(int i = layer-1;i<=n-1-layer+1-1;i++){
                ans[i][n-1-layer+1] = tempn++;
            }
            for(int i = n-1-layer+1;i>=layer; i--){
                ans[n-1-layer+1][i] = tempn++;
            }
            for(int i = n-1-layer+1;i>=layer; i--){
                ans[i][layer-1] = tempn++;
            }
        }
        if(n%2 == 1){
            ans[(n-1)/2][(n-1)/2] = n*n;   
        }
        return ans;
    }
}

 

posted @ 2017-11-20 01:07  萝卜er  阅读(162)  评论(0编辑  收藏  举报