アルゴリズムは毎日の練習に質問します---65日目:スパイラルマトリックスII

オファーが届きました。友達を掘って受け取りましょう!私は2022年の春の採用チェックインイベントに参加しています。クリックしてイベントの詳細を表示します。

1.問題の説明

正の整数が与えられた場合 、 時計回りに配置されたスパイラルの  すべての 要素を含む 正方行列 をn 生成し  ます。1n2n x nmatrix

トピックリンク:スパイラルマトリックスII

第二に、主題の要件

例1

输入: n = 3
输出: [[1,2,3],[8,9,4],[7,6,5]]
复制代码

例2

输入: n = 1
输出: [[1]]
复制代码

訪問

1.模拟计算
2.建议用时15~35min
复制代码

3.問題分析

この質問は、基本的にアルゴリズムの質問の毎日の練習と同じです--- 64日目:スパイラルマトリックスI。

これは、配列を提供し、出力できる最初の質問です。2番目の質問では、範囲を示し、配列を出力できます。最初に螺旋矩阵 I質問。

第四に、エンコーディングの実装

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        int k=1,i,u=0,d=n-1,l=0,r=n-1;//初始化数据,定义上下左右四个方向范围
        vector<vector<int>>v(n, vector<int>(n));//定义二维数组
        while(1)//循环判断
        {
            for(i=l;i<=r;i++) v[u][i]=k++;//l->r方向
            if(++u>d) break;
            for(i=u;i<=d;i++) v[i][r]=k++;//u->d方向
            if(--r<l) break;
            for(i=r;i>=l;i--) v[d][i]=k++;//r->方向
            if(--d<u) break;
            for(i=d;i>=u;i--) v[i][l]=k++;//d->u方向
            if(++l>r) break;
        }
        return v;

    }
};
复制代码

5.テスト結果

4.png

5.png

おすすめ

転載: juejin.im/post/7080686157725433892