题目
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 ] ]
代码:参考leetcode教材35题, spiral matrix。
1 public class Solution { 2 public int[][] generateMatrix(int n) 3 { 4 int[][] matrix = new int [n][n]; 5 if (n==0) return matrix; 6 int k = 1; 7 int m = n; 8 int row = 0, col = -1; 9 while(true) 10 { 11 for(int i=0;i<n;i++) 12 { 13 matrix[row][++col]=k++; 14 } 15 if(--m==0)break; 16 17 for(int i=0;i<m;i++) 18 { 19 matrix[++row][col]=k++; 20 } 21 if(--n==0)break; 22 23 for(int i=0;i<n;i++) 24 { 25 matrix[row][--col]=k++; 26 } 27 if(--m==0)break; 28 29 for(int i=0;i<m;i++) 30 { 31 matrix[--row][col]=k++; 32 } 33 if(--n==0)break; 34 } 35 return matrix; 36 37 38 } 39 }