leetcode 91:spiral-matrix-ii

题目描述

给定一个整数n,将数字1到 n2n^2n2按螺旋的顺序填入n×n的矩阵
例如:
给出的n=3,
你应该返回如下矩阵:
[↵ [ 1, 2, 3 ],↵ [ 8, 9, 4 ],↵ [ 7, 6, 5 ]↵]
题目分析:
这个题属于常规题,就是旋转着给数组赋值,需要搞清楚行和列的关系,当转完一圈以后,行和列的处理。

代码如下:
 1 vectorint> > generateMatrix(int n) {
 2         std::vectorint>> v;
 3     if (n < 1)
 4         return v;
 5 
 6     for (int i = 0; i < n; i++)
 7     {
 8         std::vector<int> t(n);
 9         v.push_back(t);
10     }
11 
12     int num = 1;
13     int rowStart = 0, rowEnd = n - 1, colStart = 0, colEnd = n - 1;
14     while (num <= n*n)
15     {
16         for (int i = colStart; i <= colEnd; i++)
17         {
18             v[rowStart][i] = num++;
19         }
20         for (int i = rowStart + 1; i <= rowEnd; i++)
21         {
22             v[i][colEnd] = num++;
23         }
24         for (int i = colEnd - 1; i >= colStart; i--)
25         {
26             v[rowEnd][i] = num++;
27         }
28         
29         for (int i = rowEnd - 1; i > rowStart; i--)
30         {
31             v[i][colStart] = num++;
32         }
33         rowStart++;
34         rowEnd--;
35         colStart++;
36         colEnd--;
37     }
38 
39     return v;
40     }

 



你可能感兴趣的:(leetcode 91:spiral-matrix-ii)