原题链接在这里:https://leetcode.com/problems/spiral-matrix-ii/
题目:
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
You should return the following matrix:
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
题解:
从外圈到内圈螺旋着填数,如果n是奇数的话,最后正中间的数需要单独填写.
Time Complexity: O(n^2). Space: O(n^2).
AC Java:
1 class Solution { 2 public int[][] generateMatrix(int n) { 3 int [][] res = new int[n][n]; 4 int num = 1; 5 int x = 0; 6 int y = 0; 7 8 //由外到内,旋转加值 9 while(n>1){ 10 for(int j = 0; j){ 11 res[x][y++] = num++; 12 } 13 14 for(int i = 0; i ){ 15 res[x++][y] = num++; 16 } 17 18 for(int j = 0; j ){ 19 res[x][y--] = num++; 20 } 21 22 for(int i = 0; i ){ 23 res[x--][y] = num++; 24 } 25 26 n-=2; 27 x++; 28 y++; 29 } 30 31 if(n%2 == 1){ 32 res[x][y] = num; 33 } 34 35 return res; 36 } 37 }
类似Spiral Matrix.
跟上Spiral Matrix III.