算法03-力扣59螺旋矩阵

算法03-力扣59螺旋矩阵_第1张图片

题目

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

示例:

输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]

思路

找规律,通过循环,将螺旋过程统一化,具体过程请看代码。

代码实现

class Solution {
public:
    vector> generateMatrix(int n) {
        int stx=0,sty=0,off=1,i,j,cir=n/2,count=1;
        vector>a(n,vector(n,0));//初始化
        while(cir--){//n除以2就是非单圈数
            for(j=sty;jsty;j--)
                a[i][j]=count++;
            for(;i>stx;i--)
                a[i][j]=count++;//从左到右以此旋转,注意保留空位给下一次
            stx++;
            sty++;//更新起始位置
            off++;//空位
        }
        if(n%2!=0)a[stx][sty]=count;//补齐单元素圈
        return a;
   }
};

总结及尾声

本题主要考虑起始位置的更新和空位的保持,通过一圈圈的循环来锻炼思维能力,如果觉得笔者写的还不错,记得点点赞点点关注哦~

算法03-力扣59螺旋矩阵_第2张图片

你可能感兴趣的:(算法,leetcode,矩阵)