螺旋矩阵 II -LintCode

来源:互联网 发布:网络写手平台 编辑:程序博客网 时间:2024/05/18 00:22

给你一个数n生成一个包含1-n^2的螺旋形矩阵。

样例:
n = 3
矩阵为

[  [ 1, 2, 3 ],  [ 8, 9, 4 ],  [ 7, 6, 5 ]]
#ifndef C381_H#define C381_H#include<iostream>#include<vector>using namespace std;class Solution {public:    /*    * @param n: An integer    * @return: a square matrix    */    vector<vector<int>> generateMatrix(int n) {        // write your code here        if (n <= 0)            return { };        vector<vector<int>> res(n, vector<int>(n, 0));        int num = 1;        int iMin = 0, iMax = n - 1;        int jMin = 0, jMax = n - 1;        while (iMin <= iMax&&jMin <= jMax)        {            for (int i = jMin; i <= jMax; ++i)            {                res[iMin][i] = num;                num++;            }            for (int i = iMin + 1; i <= iMax; ++i)            {                res[i][jMax] = num;                num++;            }            if (iMin < iMax)            {                for (int i = jMax - 1; i >= jMin; --i)                {                    res[iMax][i] = num;                    num++;                }            }            if (jMin < jMax)            {                for (int i = iMax - 1; i>iMin; --i)                {                    res[i][jMin] = num;                    num++;                }            }            iMin++;            iMax--;            jMin++;            jMax--;        }        return res;    }};#endif