Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
- Example:
Input: 3
Output:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解法
这道题其实就是把Spiral Matrix的代码稍微改一下就可以了,那道题是螺旋打印出矩阵内的值,这道题就螺旋赋值就可以了
public int[][] generateMatrix(int n) {
int up=0,down=n-1,left=0,right=n-1;
int[][] res=new int[n][n];
int index=1;
while(true){
for(int j=left;j<=right;j++)
res[up][j]=index++;
if(++up>down)
break;
for(int j=up;j<=down;j++)
res[j][right]=index++;
if(--right<left)
break;
for(int j=right;j>=left;j--)
res[down][j]=index++;
if(--down<up)
break;
for(int j=down;j>=up;j--)
res[j][left]=index++;
if(++left>right)
break;
}
return res;
}
Runtime: 1 ms, faster than 100.00% of Java online submissions for Spiral Matrix II.
Memory Usage: 36.8 MB, less than 58.01% of Java online submissions for Spiral Matrix II.