LandscapeMi

landscapemi的博客

leetcode_c++: Spiral Matrix II(059)

题目

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,
Given n = 3,

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


算法

复杂度:O(nm)


class Solution {
public:
    vector<vector<int> > generateMatrix(int n) {
        if(n==0) return vector<vector<int> >(); //  返回空的数组
        vector<vector<int> > ret(n,vector<int>(n,0));

        int rowBegin=0;
        int rowEnd=n-1;
        int colBegin=0;
        int colEnd=n-1;
        int num=1;

        while(rowBegin<=rowEnd && colBegin <= colEnd){
            if(num<=n*n) //判断是否达到最大值
            {
                //向右遍历添加
                for(int j=colBegin;j<=colEnd;j++){
                    ret[rowBegin][j]=num;
                    num++;
                }
            }
            rowBegin++;

            if(num<=n*n) //判断是否达到最大值
            {
                //向下遍历添加
                for(int i=rowBegin;i<=rowEnd;i++){
                    ret[i][colEnd]=num;
                    num++;
                }
            }
            colEnd--;


            if(num<=n*n) //判断是否达到最大值
            {
                //向左遍历添加
                for(int j=colEnd;j>=colBegin;j--){
                    ret[rowEnd][j]=num;
                    num++;
                }
            }
            rowEnd--;

            if(num<=n*n) //判断是否达到最大值
            {
                //向上遍历添加
                for(int i=rowEnd;i>=rowBegin;i--){
                    ret[i][colBegin]=num;
                    num++;
                }
            }
            colBegin++;


        }
        return ret;
    }
};
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mijian1207mijian/article/details/51550018
个人分类: leetcode(c++)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

leetcode_c++: Spiral Matrix II(059)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭