59. 螺旋矩阵 II

    科技2022-09-06  122

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

    示例:

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

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/spiral-matrix-ii 这题和54. 螺旋矩阵是正反过程,逆着填matrix的元素就可以了。

    class Solution { public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> res(n,vector<int>(n,0)); int m=n,cnt=1; for(int i=0;i<=n/2&&i<=m-1-i&&i<=n-1-i;i++)//left<=right,top<=bottom { for(int j=i;j<m-i;j++) { // res.push_back(matrix[i][j]); res[i][j]=cnt++; // cout<<"a"; } for(int k=i+1;k<n-i;k++) { // res.push_back(matrix[k][m-i-1]); res[k][m-i-1]=cnt++; // cout<<"b"; } if(n-1-i>i&&m-1-i>i)//left<right,top<bottom { for(int t=m-i-2;t>=i&&(n-1-i)>i;t--) { res[n-1-i][t]=cnt++; // res.push_back(matrix[n-1-i][t]); // cout<<"c"; } for(int z=n-i-2;z>i&&i<m-i-1;z--) { res[z][i]=cnt++; // res.push_back(matrix[z][i]); // cout<<"d"; } } } return res; } };

     

    Processed: 0.009, SQL: 9