【每日打卡】Day29:螺旋矩阵 II C++实现

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40184885/article/details/90517282

 

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

输入: 3
输出:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]
class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<int> ns;
        vector<vector<int>> ans;
        if(n == 0)  return ans;
        int a[n][n];
        memset(a,0,sizeof a);
        int k = 1;
        int l = 0, c = 0;
        while(k <= n*n){
            for(int i = 0; i < n; i ++)
                if(a[l][i] == 0){
                    a[l][i] = k++;
                    c = i;
                }

            for(int i = 0; i < n; i ++)
                if(a[i][c] == 0){
                    a[i][c] = k++;
                    l = i;
                }

            for(int i = n - 1; i >= 0; i --)
                if(a[l][i] == 0){
                    a[l][i] = k++;
                    c = i;
                }

            for(int i = n - 1; i >= 0; i --)
                if(a[i][c] == 0){
                    a[i][c] = k++;
                    l = i;
                }
        }
        for(int i = 0; i < n; i ++){
            for(int j = 0; j < n; j ++)
                ns.push_back(a[i][j]);
            ans.push_back(ns);
            ns.clear();
        }
        return ans;
    }
};

 

展开阅读全文

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