LeetCode-Spiral Matrix-螺旋矩阵
https://oj.leetcode.com/problems/spiral-matrix/
题目没难度,就是循环把每一层的螺旋打印出来即可。需要注意每次螺旋大小缩小2,计算相应的位置并考虑左边界等于右边界的情况。
class Solution { public: int n,m; int cn,cm; vector <int> tot; vector<vector<int> > matrix; void Print(){ int l=(m-cm)/2; int u=(n-cn)/2; int r=m-l-1; int d=n-l-1; if (l==r){ for (int i=u;i<=d;i++){ tot.push_back(matrix[i][l]); } return; } if (u==d){ for (int i=l;i<=r;i++){ tot.push_back(matrix[u][i]); } return; } for (int i=l;i<r;i++){ tot.push_back(matrix[u][i]); } for (int i=u;i<d;i++){ tot.push_back(matrix[i][r]); } for (int i=r;i>l;i--){ tot.push_back(matrix[d][i]); } for (int i=d;i>u;i--){ tot.push_back(matrix[i][l]); } } vector<int> spiralOrder(vector<vector<int> > &matrix) { this->matrix=matrix; n=matrix.size(); if (n==0){return tot;} m=matrix[0].size(); if (m==0){return tot;} cn=n; cm=m; while(cn>0 && cm>0){ Print(); cn-=2; cm-=2; } return tot; } };