Spiral Matrix(C++螺旋矩阵)

水深无声 2022-10-11 00:51 260阅读 0赞

(1) 设置访问数组+转向

  1. class Solution {
  2. public:
  3. vector<vector<int>> d={
  4. {0,1},{1,0},{0,-1},{-1,0}};
  5. vector<int> v;
  6. int ms=0,ns=0;
  7. public:
  8. void helper(vector<vector<int>> &vis,vector<vector<int> > &matrix,int x,int y,int i) {
  9. vis[x][y]=1;
  10. v.push_back(matrix[x][y]);
  11. if(v.size()==ms*ns) return;
  12. int x1=x+d[i][0];
  13. int y1=y+d[i][1];
  14. if(0<=x1 && x1<ms && 0<=y1 && y1<ns && vis[x1][y1]==0) {
  15. helper(vis,matrix,x1,y1,i);
  16. } else {
  17. i=(i+1)%4;
  18. x1=x+d[i][0];
  19. y1=y+d[i][1];
  20. helper(vis,matrix,x1,y1,i);
  21. }
  22. return;
  23. }
  24. vector<int> spiralOrder(vector<vector<int> > &matrix) {
  25. int m=matrix.size(),n=matrix[0].size();
  26. if(m==0) return {};
  27. ms=m,ns=n;
  28. vector<vector<int>> vis(m,vector<int>(n,0));
  29. helper(vis,matrix,0,0,0);
  30. return v;
  31. }
  32. };

发表评论

表情:
评论列表 (有 0 条评论,260人围观)

还没有评论,来说两句吧...

相关阅读