Code Ganker: Spiral Matrix II -- LeetCode

2014年3月23日星期日

Spiral Matrix II -- LeetCode

原题链接: http://oj.leetcode.com/problems/spiral-matrix-ii/
这道题跟Spiral Matrix很类似,只是这道题是直接给出1到n^2,然后把这些数按照螺旋顺序放入数组中。思路跟Spiral Matrix还是一样的,就是分层,然后按照上右下左的顺序放入数组中。每个元素只访问一次,时间复杂度是O(n^2)。代码如下:
public int[][] generateMatrix(int n) {
    if(n<0)
        return null;
    int[][] res = new int[n][n];
    int levelNum = n/2;
    int num = 1;
    for(int l=0;l<levelNum;l++)
    {
        for(int i=l;i<n-l;i++)
        {
            res[l][i] = num++;
        }
        for(int i=l+1;i<n-l;i++)
        {
            res[i][n-1-l] = num++;
        }
        for(int i=n-2-l;i>=l;i--)
        {
            res[n-1-l][i] = num++;
        }
        for(int i=n-2-l;i>l;i--)
        {
            res[i][l] = num++;
        }
    }
    if(n%2==1)
    {
        res[levelNum][levelNum] = num;
    }
    return res;
}
这种题目就是简单的数组操作,主要是得细心,注意数组下标即可。

没有评论:

发表评论