lintcode --螺旋矩阵II

来源:互联网 发布:淘宝规蜜投诉 编辑:程序博客网 时间:2024/06/07 19:59

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

 注意事项
样例

n = 3
矩阵为

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

]

/*本题就是按照螺旋的顺序把数字依次塞进去,我们可以维护上下左右边界的四个变量,一圈一圈往里面添加。最后要注意的是,如果n是奇数,要把中心那个点算上。*/public class Solution {    public int[][] generateMatrix(int n) {        int[][] res = new int[n][n];        int left = 0, right = n - 1, bottom = n - 1, top = 0;        int num = 1;//num计数        while(left < right && top < bottom){            // 1.添加该圈第一行left            for(int i = left; i < right; i++){                res[top][i] = num++;            }            // 2.添加最后一列top            for(int i = top; i < bottom; i++){                res[i][right] = num++;            }            // 3.添加最后一行            for(int i = right; i > left; i--){                res[bottom][i] = num++;            }            // 4.添加第一列            for(int i = bottom; i > top; i--){                res[i][left] = num++;            }            //一圈之后减一圈            top++;            bottom--;            left++;            right--;        }        // 如果是奇数,加上中间那个点        if(n % 2 == 1){            res[n / 2][n / 2] = num;        }        return res;    }}

原创粉丝点击