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

代码:参考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 }

 

posted @ 2015-07-09 10:02  Hygeia  阅读(142)  评论(0编辑  收藏  举报