LeetCode Online Judge 题目C# 练习 - Sparial Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2(Square(n)) in spiral order.
For example,
Given n = 3,

You should return the following matrix:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

 1         public static List<List<int>> SparialMatrixII(int n)

 2         {

 3             List<List<int>> ret = new List<List<int>>();

 4             if (n == 0)

 5                 return ret;

 6             if (n == 1)

 7             {

 8                 ret.Add(new List<int> { 1 });

 9                 return ret;

10             }

11 

12             for (int i = 1; i <= n; i++)

13             {

14                 ret.Add(new List<int>(n));

15             }

16 

17             int num = 1;

18 

19             for (int i = 0; i <= n / 2; i++)

20             {

21                 for (int col = i; col <= n - 1 - i; col++)

22                     ret[i][col] = num++;

23                 for (int row = i + 1; row <= n - 1 - i; row++)

24                     ret[row][n - 1 - i] = num++;

25                 for (int col = n - 1 - i - 1; col >= i; col--)

26                     ret[n - 1 - i][col] = num++;

27                 for (int row = n - 1 - i - 1; row >= i + 1; row--)

28                     ret[row][i] = num++;

29             }

30 

31             return ret;

32         }

代码分析:

  简单,不过要小心。。。

你可能感兴趣的:(LeetCode)