搜索此博客

2012年8月16日星期四

Print 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 ]
]

01 public int[][] generateMatrix(int n) {
02 
03 
04   int[][]matrix=new int[n][n];
05 
06   if(n==0)
07     return matrix;
08 
09   if (n==1)
10   {
11     matrix[0][0]=1;
12     return matrix;
13   }
14 
15   int start=0;
16   int end=n-1;
17   int num=1;
18 
19   while(start<end)
20   {
21   
22     for(int j=start;j<end;j++)
23     {
24       matrix[start][j]=num;
25       num++;
26     }
27   
28     for(int i=start;i<end;i++)
29     {
30       matrix[i][end]=num;
31       num++;
32     }
33     for(int j=end;j>start;j--)
34     {
35       matrix[end][j]=num;
36       num++;
37     }
38   
39     for(int i=end;i>start;i--)
40     {
41       matrix[i][start]=num;
42       num++;
43     }
44   
45     start++;
46     end--;
47   
48   }
49 
50   if(start==end)
51   {
52     matrix[start][start]=num;
53   }
54 
55   return matrix;
56 }

没有评论:

发表评论