【second】Spiral Matrix II

 

    vector<vector<int> > generateMatrix(int n) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        int start = 0;
        vector<vector<int>> res(n,vector<int>(n));
        if(n<=0)
            return res;
        int cnt = 1;
        while(2*start<n)
        {
            generateCircle(start,n-1-start,cnt,res);
            ++start;
        }
        return res;
        
    }
    
    void generateCircle(int start,int end,int& cnt,vector<vector<int>>& res)
    {
        int i;
        for(i=start;i<=end;i++)
            res[start][i] = cnt++;
        if(start<end)
        {
            for(i=start+1;i<=end;i++)
                res[i][end] = cnt++;
            for(i=end-1;i>=start;i--)
                res[end][i] = cnt++;
        }
        
        if(start+1<end)
        {
            for(i=end-1;i>=start+1;i--)
                res[i][start] = cnt++;
        }
    }

  

posted @ 2013-10-18 16:08  summer_zhou  阅读(86)  评论(0编辑  收藏  举报