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 }

 

你可能感兴趣的:(Matrix)