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