qingcheng奕  

https://oj.leetcode.com/problems/spiral-matrix-ii/

螺旋矩阵,和题目一一样的思路,这个是产生n*n 矩阵。

#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    vector<vector<int> > generateMatrix(int n)  {
        vector<vector<int> > ans;
        if(n == 0)
            return ans;
        if(n ==1)
        {
            vector<int> ansPiece;
            ansPiece.push_back(1);
            ans.push_back(ansPiece);
            return ans;
        }
        ans.resize(n);
        for(int i = 0;i<n;i++)
            ans[i].resize(n);

        int l1,l2,r2,p1;
        l1 = 0;
        l2 = 0;
        r2 = n - 1;
        p1 = n -1;
        
        int num = 1;
        while(1)
        {
            int i;
            if(num>n*n)
                break;

            for(i = l2; i <= r2; i++)
            {
                ans[l1][i] = num;
                num++;
            }

            if(l1+1>p1)
                break;
            for(i = l1+1;i<= p1;i++)
            {
                ans[i][r2] = num;
                num++;
            }

            if(r2-1<l2)
                break;
            for(i = r2-1;i>=l2;i--)
            {
                ans[p1][i] = num;
                num++;
            }

            if(p1-1<l1+1)
                break;
            for(i = p1-1;i>=l1+1;i--)
            {
                ans[i][l2] = num;
                num++;
            }
            l1++;
            l2++;
            r2--;
            p1--;
        }
        return ans;
    }
};

 

posted on 2014-06-21 19:30  qingcheng奕  阅读(148)  评论(0编辑  收藏  举报