Spiral Matrix II(C++螺旋矩阵 II)

我就是我 2023-01-17 10:57 268阅读 0赞

(1)取模转弯

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

发表评论

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

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

相关阅读